У меня есть следующий код:
send_event_at({TsMsec,Msg}) ->
Now = os:system_time(micro_seconds),
NowMsec = erlang:convert_time_unit(Now,micro_seconds,milli_seconds),
DelayMsec = TsMsec - NowMsec,
if DelayMsec >= 0 ->
erlang:send_after(DelayMsec,self(),Msg);
true -> ignore
end.
Тогда в gen_fsm я обрабатываю эти сообщения как:
handle_info({new_status,{Status,HrQtKey}},StateName,State) ->
.....
{next_state,StateName,State};
Код, используемый для отправки сообщений с задержкой до 48 часов.
В большинстве случаев все в порядке.
Но если мой gen_fsm имеет приличное количество входящих сообщений, сообщения new_status задерживаются до 15 минут.
Эта ошибка появляется не слишком часто, но она действительно раздражает.
А идея, в чем могут быть причины и как лучше всего это исправить?