reset worker on report error

This commit is contained in:
Ulf Wiger
2025-06-12 15:46:54 +02:00
parent e34207144e
commit 672f2f75c9
3 changed files with 8 additions and 7 deletions
+5 -4
View File
@@ -272,13 +272,14 @@ incr_worker_error(#worker{errors = Es, index = I} = W, Ws) ->
W1 = reset_worker_(W#worker{errors = Es+1}),
lists:keyreplace(I, #worker.index, Ws, W1).
maybe_continue(stopped, _, S) ->
S;
%% maybe_continue(stopped, _, S) ->
%% S;
maybe_continue(continue, W, S) ->
maybe_restart_worker(W, S);
maybe_continue(error, W, S) ->
?LOG_INFO("Won't restart worker ~p due to error", [W#worker.index]),
S.
Ws = reset_worker(W, S#st.workers),
S#st{workers = Ws}.
maybe_restart_worker(#worker{index = I} = W, #st{candidate = C} = S) ->
case maps:get(nonces, C) of
@@ -314,7 +315,7 @@ stop_workers_for_seq(Seq, Workers) ->
stop_worker(#worker{pid = Pid} = W) when is_pid(Pid) ->
MRef = erlang:monitor(process, Pid),
?LOG_DEBUG("Will stop worker ~p (MRef = ~p)", [Pid, MRef]),
exit(Pid, kill),
exit(Pid, shutdown),
receive
{'EXIT', Pid, _} -> ok;
{'DOWN', MRef, process, Pid, _} -> ok