Do not allow sender to be suspended for any reason
Project: http://git-wip-us.apache.org/repos/asf/couchdb-rexi/repo Commit: http://git-wip-us.apache.org/repos/asf/couchdb-rexi/commit/dd0e3f99 Tree: http://git-wip-us.apache.org/repos/asf/couchdb-rexi/tree/dd0e3f99 Diff: http://git-wip-us.apache.org/repos/asf/couchdb-rexi/diff/dd0e3f99 Branch: refs/heads/import Commit: dd0e3f998175a3ac9abc28f7ebc4602b666ff175 Parents: 140cb8d Author: Adam Kocoloski <[email protected]> Authored: Tue Mar 29 17:01:23 2011 -0400 Committer: Adam Kocoloski <[email protected]> Committed: Tue Mar 29 17:01:23 2011 -0400 ---------------------------------------------------------------------- src/rexi.erl | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/couchdb-rexi/blob/dd0e3f99/src/rexi.erl ---------------------------------------------------------------------- diff --git a/src/rexi.erl b/src/rexi.erl index 22097b3..eeda1c6 100644 --- a/src/rexi.erl +++ b/src/rexi.erl @@ -59,7 +59,15 @@ cast(Node, MFA) -> -spec cast(node(), pid(), {atom(), atom(), list()}) -> reference(). cast(Node, Caller, MFA) -> Ref = make_ref(), - ok = gen_server:cast({?SERVER, Node}, {doit, {Caller,Ref}, get(nonce), MFA}), + Msg = {'$gen_cast', {doit, {Caller, Ref}, get(nonce), MFA}}, + case erlang:send({?SERVER, Node}, Msg, [noconnect, nosuspend]) of + noconnect -> + spawn(erlang, send, [{?SERVER, Node}, Msg]); + nosuspend -> + spawn(erlang, send, [{?SERVER, Node}, Msg]); + _ -> + ok + end, Ref. %% @doc Sends an async kill signal to the remote process associated with Ref.
