dnsimple / erldns

DNS server, in Erlang.
MIT License
398 stars 98 forks source link

Dead worker process cleanup #79

Open aeden opened 6 years ago

aeden commented 6 years ago

I observed the following errors occurring today in a production system (name and IPs anonymized).

2018-06-26 21:20:54.277 [error] <0.998.0>@erldns_worker:handle_decoded_udp_message:147 Worker process crashed (error: exit, reason: {noproc,{gen_server,call,[<0.1000.0>,{process,{dns_message,47717,false,0,false,false,false,false,false,false,0,1,0,0,1,[{dns_query,<<"example.com">>,1,28}],[],[],[{dns_optrr,512,0,0,true,[]}]},#Port<0.1551>,52805,{udp,{1,2,3,4}}},500]}})

This appears to be a case where a worker proc either failed to start properly or failed after starting. The worker process manager should clean up the worker list state in this case, removing the ID for the dead worker and starting a new worker.