ソースを参照

Fixed a bug where remote workers could not notify when finished.

Paul Downen 13 年 前
コミット
fae3f38831
1 ファイル変更6 行追加6 行削除
  1. 6 6
      src/ebb_worker.erl

+ 6 - 6
src/ebb_worker.erl

@@ -2,7 +2,7 @@
 
 -export([start_link/3, start_link/4, stop/1]).
 
--export([worker/3, worker/4]).
+-export([worker/3, worker/5]).
 
 start_link(Func, Args, Receiver) ->
     try
@@ -15,11 +15,11 @@ start_link(Func, Args, Receiver) ->
 
 start_link(distributed, Func, Args, Receiver) ->
     Node = ebb_work_manager:available_node(),
-    start_link(Node, Func, Args, Receiver);
-start_link(Node, Func, Args, Receiver) ->
+    start_link(node(), Node, Func, Args, Receiver).
+start_link(Root, Node, Func, Args, Receiver) ->
     try
 	Result = spawn_link(Node, ?MODULE, worker,
-			    [Node, Func, Args, Receiver]),
+			    [Root, Node, Func, Args, Receiver]),
 	ebb_work_manager:start_work(Node),
 	Result
     of
@@ -31,7 +31,7 @@ start_link(Node, Func, Args, Receiver) ->
 worker(Func, Args, Receiver) ->
     ebb_event:return(Receiver, apply(Func, Args)).
 
-worker(Node, Func, Args, Receiver) ->
+worker(Root, Node, Func, Args, Receiver) ->
     Ref = make_ref(),
     io:format("~p ~p: Worker thread started~n", [Node, Ref]),
     {_, _, Start} = erlang:now(),
@@ -39,7 +39,7 @@ worker(Node, Func, Args, Receiver) ->
     {_, _, Finish} = erlang:now(),
     io:format("~p ~p: Worker thread finished, time ~p~n",
 	      [Node, Ref, Finish-Start]),
-    ebb_work_manager:work_finished(Node).
+    ebb_work_manager:work_finished(Root, Node).
 
 stop(Worker) ->
     exit(Worker, kill).