[erlang-questions] rpc call and mnesia transaction

arif <>
Sat Dec 15 17:36:46 CET 2012


Hi,

I'm having some trouble with an rpc call in R5B03-1.

I have one node, , with mnesia running and with a table
mytable.

If I use rpc to read a record from a shell running on another node, it
works fine.

()1> Fun = fun() -> mnesia:read(mytable, akey) end.
#Fun<erl_eval.20.82930912>
()2> rpc:call('', mnesia, transaction, [Fun]).
{atomic,[{mytable,akey,<snip>}]}
()3>


However, if I put the code in a file:

-module(anrpctest).
-compile(export_all).

do() ->
    F = fun() -> mnesia:read(mytable, akey) end,
    {atomic, Result} = rpc:call('', mnesia, transaction,
[F]),
    Result.

and try to execute anrpctest:do(), it fails.

()4> c(anrpctest).
{ok,anrpctest}
()5> anrpctest:do().
** exception error: no match of right hand side value
                    {aborted,
                        {undef,
                            [{#Fun<anrpctest.0.126678793>,[],[]},
                             {mnesia_tm,apply_fun,3,
                                 [{file,"mnesia_tm.erl"},{line,829}]},
                             {mnesia_tm,execute_transaction,5,
                                 [{file,"mnesia_tm.erl"},{line,809}]},
                             {rpc,'-handle_call_call/6-fun-0-',5,
                                 [{file,"rpc.erl"},{line,203}]}]}}
     in function  anrpctest:do/0 (anrpctest.erl, ....

Any idea why this is happening?

Thanks and regards
Arif





More information about the erlang-questions mailing list