Hi All,
Server has many critical threads running and co-ordinating each other like
RequestProcessor chains et. When going through each threads, most of them
having the similar structure like:
public void run() {
try {
while(running)
// processing logic
}
} catch (InterruptedException e) {
LOG.error("Unexpected interruption", e);
} catch (RequestProcessorException e) {
LOG.error("Unexpected exception", e);
} catch (Exception e) {
LOG.error("Unexpected exception", e);
}
LOG.info("...exited loop!");
}
I feel, we could improve our threads in our system. From the design I could
see, there could be a chance of silently leaving the thread in case of any
exception(abnormal or any functional issue too)
If this happens in the production, the server would get hanged forever and will
not be able to deliver its role.
If we have a 'DeathWatcher 'or some other mechanism in place to monitor all the
critical threads. It can take a decision like - bring down the process if
required, or shutdown the quorumpeer and go for LE again etc.
Now the monitoring or management tool will knows about the situation and can
act upon.
Appreciate any thoughts ?
Thanks in advance,
Rakesh R