You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Arunkumar M (JIRA)" <ji...@apache.org> on 2016/08/12 06:38:20 UTC
[jira] [Updated] (CASSANDRA-12330) Unreleased Resource: Sockets
[ https://issues.apache.org/jira/browse/CASSANDRA-12330?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Arunkumar M updated CASSANDRA-12330:
------------------------------------
Labels: easyfix newbie patch (was: )
Assignee: Arunkumar M
Reviewer: Yuki Morishita
Fix Version/s: 3.x
Status: Patch Available (was: Open)
> Unreleased Resource: Sockets
> ----------------------------
>
> Key: CASSANDRA-12330
> URL: https://issues.apache.org/jira/browse/CASSANDRA-12330
> Project: Cassandra
> Issue Type: Sub-task
> Reporter: Eduardo Aguinaga
> Assignee: Arunkumar M
> Labels: patch, newbie, easyfix
> Fix For: 3.x
>
> Attachments: 12330-3.0.txt
>
>
> Overview:
> In May through June of 2016 a static analysis was performed on version 3.0.5 of the Cassandra source code. The analysis included an automated analysis using HP Fortify v4.21 SCA and a manual analysis utilizing SciTools Understand v4. The results of that analysis includes the issue below.
> Issue:
> Sockets are low level resources that must be explicitly released so subsequent callers will have access to previously used sockets. In the file DefaultConnectionFactory.java on line 52 a socket is acquired and eventually returned to the caller on line 55.
> If an exception is thrown by any of the code between lines 52 and 55 the socket acquired on line 52 will not be released for subsequent reuse.
> DefaultConnectionFactory.java, lines 50-73:
> {code:java}
> 50 try
> 51 {
> 52 Socket socket = OutboundTcpConnectionPool.newSocket(peer);
> 53 socket.setSoTimeout(DatabaseDescriptor.getStreamingSocketTimeout());
> 54 socket.setKeepAlive(true);
> 55 return socket;
> 56 }
> 57 catch (IOException e)
> 58 {
> 59 if (++attempts >= MAX_CONNECT_ATTEMPTS)
> 60 throw e;
> 61
> 62 long waitms = DatabaseDescriptor.getRpcTimeout() * (long)Math.pow(2, attempts);
> 63 logger.warn("Failed attempt {} to connect to {}. Retrying in {} ms. ({})", attempts, peer, waitms, e);
> 64 try
> 65 {
> 66 Thread.sleep(waitms);
> 67 }
> 68 catch (InterruptedException wtf)
> 69 {
> 70 throw new IOException("interrupted", wtf);
> 71 }
> 72 }
> 73 }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)