[erlang-bugs] gen_server:multi_call/4 and Java nodes
Wed Sep 11 09:21:16 CEST 2013
I ran into a problem with rpc:multicall/5 on hidden nodes yesterday. Despite specifying a timeout value the call hangs infinitly. Most certainly, I managed to locate the problem in gen_server:multi_call/4.
I made an RPC with Nodes = [node() | nodes(connected)] (including hidden nodes). This (accidentially) also took some hidden Java nodes into account. Looking at the code in gen_server:start_monitor/2, the Java node does fall in the same category of nodes than a node running R6. However, when the timer expires in the R6 clause of gen_server:rec_nodes/7, the code issues an RPC with timeout infinity to find out whether the rex server is alive on the remote node. This RPC call blocks forever when it is applied to a Java node (this most probably also applies to C nodes).
In my opinion, a hanging RPC call for whatever reason is always acceptable, when the user does not provide a timeout value. However, I would strongly expect an RPC to fail, when it can't succeed within a given timeout regardless what node it was applied to. This is why I decided to post this to the bug list.
More information about the erlang-bugs