@@ -182,7 +182,7 @@ servers(ServerRef) ->
182182 # state {servers = Servers } = sys :get_state (ServerRef ),
183183 maps :fold (
184184 fun (_ , #{ip := IP , port := Port , retries := Retries , failed := Failed } = _ , M )
185- when Failed < Retries ->
185+ when Failed = < Retries ->
186186 [{{IP , Port }, Retries , Failed } | M ];
187187 (_ , _ , M ) -> M
188188 end , [], Servers ).
@@ -246,20 +246,16 @@ handle_call({wanna_send, Candidates, Tried}, _From,
246246 {reply , Error , State0 }
247247 end ;
248248
249- handle_call ({failed , Peer }, _From , # state {servers = Servers0 } = State0 ) ->
250- Servers =
251- case Servers0 of
252- #{Peer := #{retries := Retries , failed := Failed } = Server }
253- when Failed < Retries ->
254- Servers0 #{Peer := Server #{failed := Failed + 1 }};
255- #{Peer := #{retries := Retries , failed := Failed } = Server }
256- when Failed =:= Retries ->
257- erlang :start_timer (? DEFAULT_DOWN_TIME , self (), {reset , Peer }),
258- Servers0 #{Peer := Server #{failed := Failed + 1 }};
259- _ ->
260- Servers0
261- end ,
262- State = State0 # state {servers = Servers },
249+ handle_call ({failed , Peer }, _From , # state {servers = Servers } = State0 )
250+ when is_map_key (Peer , Servers ) ->
251+ #{retries := Retries , failed := Failed } = Server = map_get (Peer , Servers ),
252+ case Failed > Retries of
253+ true -> erlang :start_timer (? DEFAULT_DOWN_TIME , self (), {reset , Peer });
254+ false -> ok
255+ end ,
256+ State = State0 # state {servers = Servers #{Peer := Server #{failed := Failed + 1 }}},
257+ {reply , ok , State };
258+ handle_call ({failed , _Peer }, _From , State ) ->
263259 {reply , ok , State };
264260
265261% % @private
@@ -364,7 +360,7 @@ select_servers([Candidate|More], Servers, Selected) ->
364360 #{Candidate := [_ |_ ] = Pool } ->
365361 select_servers (More , Servers , select_servers (Pool , Servers , Selected ));
366362 #{Candidate := #{retries := Retries , failed := Failed }}
367- when Failed < Retries ->
363+ when Failed = < Retries ->
368364 select_servers (More , Servers , [Candidate | Selected ]);
369365 _ ->
370366 select_servers (More , Servers , Selected )
0 commit comments