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)