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)