@@ -61,10 +61,16 @@ read({Server, Node}, Id) when Node =:= node() ->
6161 Result = pes_promise :fake_reply (do_read (Server , Id )),
6262 pes_stat :count ([server , request_count ]),
6363 Result ;
64- read ({Server , Node }, Id ) ->
64+ read ({Server , Node } = Target , Id ) ->
6565 % spawn a process on remote send a message is way faster than an rpc call.
66- Pid = spawn (Node , ? MODULE , perform_read_worker , [Server ]),
67- pes_promise :async (Pid , {read , Id });
66+ case pes_cluster :is_node_alive (Node ) of
67+ true ->
68+ Pid = spawn (Node , ? MODULE , perform_read_worker , [Server ]),
69+ pes_promise :async (Pid , {read , Id });
70+ false ->
71+ % fake promise, fake down message
72+ pes_promise :fake_down_reply (Target )
73+ end ;
6874read (Node , Id ) ->
6975 async (Node , {read , Id }).
7076
@@ -88,15 +94,13 @@ force_repair(Node, Id, NewTerm, Value) ->
8894 async (Node , {repair , Id , NewTerm , Value }).
8995
9096-spec async (target (), term ()) -> pes_promise :promise ().
91- async ({Server , Node }, Command ) ->
97+ async ({_Server , Node } = Target , Command ) ->
9298 case pes_cluster :is_node_alive (Node ) of
9399 true -> %
94- pes_promise :async ({ Server , Node } , Command );
100+ pes_promise :async (Target , Command );
95101 false ->
96102 % fake promise, fake down message
97- Ref = make_ref (),
98- self () ! {'DOWN' , Ref , process , {Server , Node }, noconnection },
99- {promise , Ref }
103+ pes_promise :fake_down_reply (Target )
100104 end .
101105
102106-spec start_link (atom ()) -> {ok , pid ()}.
0 commit comments