[
https://issues.apache.org/jira/browse/ZOOKEEPER-2442?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Michael Han updated ZOOKEEPER-2442:
-----------------------------------
Attachment: ZOOKEEPER-2442.patch
1. Refactor closeSocket so it can handle null input parameter which simplifies
caller side.
2. Close socket for all code path that's previously missing.
3. Refactor Log.debug to remove the conditional check to make the usage
consistent across the file.
> 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
> Attachments: ZOOKEEPER-2442.patch
>
>
> 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)