Browse Source

Ensure to unlink the process on the node it was first linked on.

Roberto Ostinelli 9 years ago
parent
commit
88e5e87e91
1 changed files with 7 additions and 3 deletions
  1. 7 3
      src/syn_backbone.erl

+ 7 - 3
src/syn_backbone.erl

@@ -106,9 +106,8 @@ unregister(Key) ->
         undefined ->
             {error, undefined};
         Pid ->
-            remove_process_by_key(Key),
-            %% unlink
-            gen_server:call(?MODULE, {unlink_process, Pid})
+            Node = node(Pid),
+            gen_server:call({?MODULE, Node}, {unregister_on_node, Key, Pid})
     end.
 
 -spec count() -> non_neg_integer().
@@ -189,6 +188,11 @@ handle_call({register_on_node, Key, Pid, Meta}, _From, State) ->
             {reply, {error, taken}, State}
     end;
 
+handle_call({unregister_on_node, Key, Pid}, _From, State) ->
+    remove_process_by_key(Key),
+    erlang:unlink(Pid),
+    {reply, ok, State};
+
 handle_call({unlink_process, Pid}, _From, State) ->
     erlang:unlink(Pid),
     {reply, ok, State};