Skip to content

Commit 5f6a0ce

Browse files
committed
fix: align noproc handling with handle_continue semantics
1 parent 0a846c7 commit 5f6a0ce

1 file changed

Lines changed: 14 additions & 6 deletions

File tree

src/gen_rpc_client.erl

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -691,15 +691,23 @@ translate_noproc(NodeOrTuple, NoprocReason, MRef) ->
691691
{badrpc, Reason};
692692
{ok, {shutdown, Reason}} ->
693693
{badrpc, Reason};
694+
{ok, noproc} ->
695+
%% Process died before monitor could observe shutdown reason; retry start to recover cause.
696+
maybe_translate_from_start_client(NodeOrTuple, NoprocReason);
694697
{ok, Reason} ->
695698
{badrpc, Reason};
696699
timeout ->
697-
case maybe_start_client(NodeOrTuple) of
698-
{error, Reason} ->
699-
Reason;
700-
{ok, _} ->
701-
{badrpc, {unknown_error, NoprocReason}}
702-
end
700+
{badrpc, {unknown_error, NoprocReason}}
701+
end.
702+
703+
maybe_translate_from_start_client(NodeOrTuple, NoprocReason) ->
704+
case maybe_start_client(NodeOrTuple) of
705+
{error, {badrpc, Reason}} ->
706+
{badrpc, Reason};
707+
{error, Reason} ->
708+
Reason;
709+
{ok, _Pid} ->
710+
{badrpc, {unknown_error, NoprocReason}}
703711
end.
704712

705713
%% Bypass the pipeline for local calls.

0 commit comments

Comments
 (0)