I love the idea. In general, it would be great to uplift the way we do threading. It is a BIG project though, which is why it hasn't been tackled. I think this will go best if you have a clear idea of how we can break down the change so it isn't a several month dev/review process.
C On Thu, Mar 27, 2014 at 10:38 AM, Rakesh R <[email protected]> wrote: > 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 >
