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

Michael Han commented on ZOOKEEPER-2737:
----------------------------------------

Committed.
Master: 
https://github.com/apache/zookeeper/commit/d8adc547f9856747905b7d46450f13fa98df147f
3.5:
https://github.com/apache/zookeeper/commit/5c356f5a47402c000b5e206a536273afc75de883

> NettyServerCnxFactory leaks connection if exception happens while writing to 
> a channel.
> ---------------------------------------------------------------------------------------
>
>                 Key: ZOOKEEPER-2737
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2737
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: server
>    Affects Versions: 3.5.2
>            Reporter: Michael Han
>            Assignee: Michael Han
>            Priority: Critical
>              Labels: connection, netty, server
>             Fix For: 3.5.3, 3.6.0
>
>
> Found this while debugging occasionally failed unit tests. Currently we do 
> this if exception occurs during writing to a channel with Netty:
> {code}
> @Override
>         public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent 
> e)
>             throws Exception
>         {
>             LOG.warn("Exception caught " + e, e.getCause());
>             NettyServerCnxn cnxn = (NettyServerCnxn) ctx.getAttachment();
>             if (cnxn != null) {
>                 if (LOG.isDebugEnabled()) {
>                     LOG.debug("Closing " + cnxn);
>                     cnxn.close();
>                 }
>             }
>         }
> {code}
> So the connection is only closed when debug mode is enabled. This is 
> problematic as lots of clean up code is abstracted inside the close and 
> without proper close the connection we are leaking resources.
> [Commit 
> log|https://github.com/apache/zookeeper/blob/master/src/java/main/org/apache/zookeeper/server/NettyServerCnxnFactory.java#L147]
>  indicates the issue exists since day 1 with ZOOKEEPER-733. Note the original 
> patch uploaded to ZOOKEEPER-733 has this close call in right place, and the 
> call gets moved around during iteration of the patches w/o gets noticed.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to