You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Diogo Sousa (JIRA)" <ji...@apache.org> on 2014/08/12 17:43:12 UTC

[jira] [Created] (CASSANDRA-7757) Possible Atomicity Violations in StreamSession and ThriftSessionManager

Diogo Sousa created CASSANDRA-7757:
--------------------------------------

             Summary: Possible Atomicity Violations in StreamSession and ThriftSessionManager
                 Key: CASSANDRA-7757
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-7757
             Project: Cassandra
          Issue Type: Bug
          Components: Core
            Reporter: Diogo Sousa
            Priority: Minor


I'm developing a tool for atomicity violation detection and I think it have found two atomicity violations in cassandra.

In org.apache.cassandra.streaming.StreamSession there might be an atomicity violation in method addTransferFiles(), lines 310-314:

{noformat}
310:     StreamTransferTask task = transfers.get(cfId);
            if (task == null)
            {
                task = new StreamTransferTask(this, cfId);
314:         transfers.put(cfId, task);
            }
{noformat}

A concurrent thread can insert a transfer with the same uuid creating two StreamTransferTask, and only one get into "transfers".

In org.apache.cassandra.thrift.ThriftSessionManager, a simular situation can occur in method currentSession(), lines 57-61:

{noformat}
57:  ThriftClientState cState = activeSocketSessions.get(socket);
        if (cState == null)
        {
            cState = new ThriftClientState(socket);
51:       activeSocketSessions.put(socket, cState);
        }
{noformat}




--
This message was sent by Atlassian JIRA
(v6.2#6252)