[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2442?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Han updated ZOOKEEPER-2442:
-----------------------------------
    Description: 
The function connectOne() in QuorumCnxManager.java sometimes fails to release a 
socket allocated by Socket():

{code}
 try {

                if (LOG.isDebugEnabled()) {
                    LOG.debug("Opening channel to server " + sid);
                }
                Socket sock = new Socket();
                setSockOpts(sock);
                sock.connect(self.getView().get(sid).electionAddr, cnxTO);
                if (LOG.isDebugEnabled()) {
                    LOG.debug("Connected to server " + sid);
                }
                initiateConnection(sock, sid);
            } catch (UnresolvedAddressException e) {
                // Sun doesn't include the address that causes this
                // exception to be thrown, also UAE cannot be wrapped cleanly
                // so we log the exception in order to capture this critical
                // detail.
                LOG.warn("Cannot open channel to " + sid
                        + " at election address " + electionAddr, e);
                throw e;
            } catch (IOException e) {
                LOG.warn("Cannot open channel to " + sid
                        + " at election address " + electionAddr,
                        e);
            }
{code}

Another place in Listener.run() where the client socket is not explicitly 
closed.

  was:
The function connectOne() in QuorumCnxManager.java sometimes fails to release a 
socket allocated by Socket():

{code}
 try {

                if (LOG.isDebugEnabled()) {
                    LOG.debug("Opening channel to server " + sid);
                }
                Socket sock = new Socket();
                setSockOpts(sock);
                sock.connect(self.getView().get(sid).electionAddr, cnxTO);
                if (LOG.isDebugEnabled()) {
                    LOG.debug("Connected to server " + sid);
                }
                initiateConnection(sock, sid);
            } catch (UnresolvedAddressException e) {
                // Sun doesn't include the address that causes this
                // exception to be thrown, also UAE cannot be wrapped cleanly
                // so we log the exception in order to capture this critical
                // detail.
                LOG.warn("Cannot open channel to " + sid
                        + " at election address " + electionAddr, e);
                throw e;
            } catch (IOException e) {
                LOG.warn("Cannot open channel to " + sid
                        + " at election address " + electionAddr,
                        e);
            }
{code}


> Socket leak in QuorumCnxManager connectOne
> ------------------------------------------
>
>                 Key: ZOOKEEPER-2442
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2442
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: quorum, server
>    Affects Versions: 3.5.1
>            Reporter: Michael Han
>            Assignee: Michael Han
>
> The function connectOne() in QuorumCnxManager.java sometimes fails to release 
> a socket allocated by Socket():
> {code}
>  try {
>                 if (LOG.isDebugEnabled()) {
>                     LOG.debug("Opening channel to server " + sid);
>                 }
>                 Socket sock = new Socket();
>                 setSockOpts(sock);
>                 sock.connect(self.getView().get(sid).electionAddr, cnxTO);
>                 if (LOG.isDebugEnabled()) {
>                     LOG.debug("Connected to server " + sid);
>                 }
>                 initiateConnection(sock, sid);
>             } catch (UnresolvedAddressException e) {
>                 // Sun doesn't include the address that causes this
>                 // exception to be thrown, also UAE cannot be wrapped cleanly
>                 // so we log the exception in order to capture this critical
>                 // detail.
>                 LOG.warn("Cannot open channel to " + sid
>                         + " at election address " + electionAddr, e);
>                 throw e;
>             } catch (IOException e) {
>                 LOG.warn("Cannot open channel to " + sid
>                         + " at election address " + electionAddr,
>                         e);
>             }
> {code}
> Another place in Listener.run() where the client socket is not explicitly 
> closed.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to