137
137
%% 'EXIT', 'COMM_FAILURE' or 'OBJECT_NOT_EXIST'
138
138
%%------------------------------------------------------------
140
send_stubborn(M, F, A, MaxR, Wait) when list(A) ->
140
send_stubborn(M, F, A, MaxR, Wait) when is_list(A) ->
141
141
send_stubborn(M, F, A, MaxR, Wait, 0);
142
142
send_stubborn(M, F, A, MaxR, Wait) ->
143
143
send_stubborn(M, F, [A], MaxR, Wait, 0).
147
147
send_stubborn(M, F, A, MaxR, Wait, Times) ->
148
148
?debug_print("~p:~p(~p) # of retries: ~p~n", [M,F,A, Times]),
149
149
case catch apply(M,F,A) of
150
{'EXCEPTION', E} when record(E, 'COMM_FAILURE')->
153
send_stubborn(M, F, A, MaxR, Wait, NewTimes);
154
{'EXCEPTION', E} when record(E, 'TRANSIENT')->
157
send_stubborn(M, F, A, MaxR, Wait, NewTimes);
158
{'EXCEPTION', E} when record(E, 'TIMEOUT')->
150
{'EXCEPTION', E} when is_record(E, 'COMM_FAILURE')->
153
send_stubborn(M, F, A, MaxR, Wait, NewTimes);
154
{'EXCEPTION', E} when is_record(E, 'TRANSIENT')->
157
send_stubborn(M, F, A, MaxR, Wait, NewTimes);
158
{'EXCEPTION', E} when is_record(E, 'TIMEOUT')->
159
159
NewTimes = Times +1,
160
160
timer:sleep(Wait),
161
161
send_stubborn(M, F, A, MaxR, Wait, NewTimes);