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

Vinay commented on ZOOKEEPER-1375:
----------------------------------

As rakesh told 
[here|https://issues.apache.org/jira/browse/ZOOKEEPER-1100?focusedCommentId=13234068&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13234068],
 throwable was handled in catch block, but there is a chance of getting OOME 
while creating event. we got this specific OOME and SendThread exited and 
clients hanged.
{noformat}2013-08-25 23:02:41,206 - ERROR 
[main-SendThread(linux-136:25500):ClientCnxn$1@411] - from 
main-SendThread(linux-136:25500)
java.lang.OutOfMemoryError: Java heap space
        at java.util.HashMap.resize(HashMap.java:462)
        at java.util.HashMap.addEntry(HashMap.java:755)
        at java.util.HashMap.put(HashMap.java:385)
        at java.util.HashSet.add(HashSet.java:200)
        at java.util.AbstractCollection.addAll(AbstractCollection.java:305)
        at 
org.apache.zookeeper.ZooKeeper$ZKWatchManager.materialize(ZooKeeper.java:183)
        at 
org.apache.zookeeper.ClientCnxn$EventThread.queueEvent(ClientCnxn.java:463)
        at 
org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1123){noformat}


So, we need better handling of OOME. 

Any thoughts?
                
> 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