" 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 ?"

This is how I handle the critical threads in my client apps that use Zookeeper. 
 Keep a reference to the thread and periodically make sure it's still alive and 
well - respawn it if it is not.

Thanks,
Greg


-----Original Message-----
From: Rakesh R [mailto:[email protected]] 
Sent: Thursday, March 27, 2014 10:39 AM
To: [email protected]; [email protected]
Subject: Thread handling

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

Reply via email to