[
https://issues.apache.org/jira/browse/ZOOKEEPER-2737?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15943691#comment-15943691
]
ASF GitHub Bot commented on ZOOKEEPER-2737:
-------------------------------------------
Github user asfgit closed the pull request at:
https://github.com/apache/zookeeper/pull/207
> 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)