Skip to content

Commit caac879

Browse files
committed
fix retries counter handling and reset
1 parent 1ff6c00 commit caac879

File tree

1 file changed

+12
-16
lines changed

1 file changed

+12
-16
lines changed

src/eradius_client_mngr.erl

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)