[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-1375?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13765965#comment-13765965
 ] 

Keith Turner commented on ZOOKEEPER-1375:
-----------------------------------------

In ACCUMULO-1708, I am trying to work out a way to make Accumulo server 
processes die if any thread throws an Error.  Accumulo uses Zookeeper and HDFS. 
 One problem I have run into is that zookeeper and HDFS create threads that 
could possibly throw OOME.  I thought I was onto something with 
ThreadGroup.uncaughtException(), but since zookeeper and hdfs threads catch 
Throwable its a dead end.  If interested, I attached an example called 
ThreadTest.java to ACCUMULO-1708 that shows an experiment trying to use a 
thread group.

If zookeeper client side threads always rethrew Errors, then this would ideal 
for my purposes.   Zookeeper code could still try to take some action in catch. 
  I suppose this might look like the following.


{code:java}
try{
    //...
} catch (Throwable e)
{
   try{
     //..
     cleanup();
     if(state.isAlive()){
        eventThread.queueEvent(
        new WatchedEvent(Event.EventType.None, Event.KeeperState.Disconnected, 
null) )
     }
     //....
   }catch (Throwable e) {
     //failure while trying to process failure
     e.printStackTrace();
   }finally{
      throw e;
   }
}
{code}

                
> SendThread is exiting after OOMError
> ------------------------------------
>
>                 Key: ZOOKEEPER-1375
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1375
>             Project: ZooKeeper
>          Issue Type: Bug
>    Affects Versions: 3.4.0
>            Reporter: Rakesh R
>
> After reviewing the ClientCnxn code, there is still chances of exiting the 
> SendThread without intimating the users. Say if client throws OOMError and 
> entered into the throwable block. Here again while sending the Disconnected 
> event, its creating "new WatchedEvent()" object.This will throw OOMError and 
> leads to exit the SendThread without any Disconnected event notification.
> {noformat}
> try{
>     //...
> } catch (Throwable e)
> {
>     //..
>     cleanup();
>    if(state.isAlive()){
>         eventThread.queueEvent(
>         new WatchedEvent(Event.EventType.None, 
> Event.KeeperState.Disconnected, null) )
>    }
>    //....
> }
> {noformat}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to