Jason Reber created CASSANDRA-5382:
--------------------------------------

             Summary: ConcurrentModificantionException on server when multiple 
read CQL3 read requests recieved on single column family simultaneously.
                 Key: CASSANDRA-5382
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-5382
             Project: Cassandra
          Issue Type: Bug
    Affects Versions: 1.2.3
         Environment: SLES, Sun JDK 1.6.0_43
            Reporter: Jason Reber
            Priority: Minor


The exception below is thrown on the server when two reads are performed at the 
exact same time on the same column family. This causes the query to fail. 

The problem appears to be caused by the 'name' list in 
org.apache.cassandra.cql3.ResultSet$Metadata. The reference is passed in to the 
constructor and iterated without copying and without a synch block. When two of 
these ResultSet instances are created from the same metadata list at the same 
time, a ConcurrentModificationException is thrown.

The error:

ERROR [Thrift:860] 2013-03-25 09:27:39,467 CustomTThreadPoolServer.java (line 
217) Error occurred during processing of message.
java.util.ConcurrentModificationException
        at 
java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
        at java.util.AbstractList$Itr.next(AbstractList.java:343)
        at 
org.apache.cassandra.cql3.ResultSet$Metadata.allInSameCF(ResultSet.java:237)
        at 
org.apache.cassandra.cql3.ResultSet$Metadata.<init>(ResultSet.java:219)
        at org.apache.cassandra.cql3.ResultSet.<init>(ResultSet.java:47)
        at 
org.apache.cassandra.cql3.statements.Selection$ResultSetBuilder.<init>(Selection.java:239)
        at 
org.apache.cassandra.cql3.statements.Selection$ResultSetBuilder.<init>(Selection.java:221)
        at 
org.apache.cassandra.cql3.statements.Selection.resultSetBuilder(Selection.java:211)
        at 
org.apache.cassandra.cql3.statements.SelectStatement.process(SelectStatement.java:655)
        at 
org.apache.cassandra.cql3.statements.SelectStatement.processResults(SelectStatement.java:147)
        at 
org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:136)
        at 
org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:62)
        at 
org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:132)
        at 
org.apache.cassandra.cql3.QueryProcessor.processPrepared(QueryProcessor.java:254)
        at 
org.apache.cassandra.thrift.CassandraServer.execute_prepared_cql3_query(CassandraServer.java:1851)
        at 
org.apache.cassandra.thrift.Cassandra$Processor$execute_prepared_cql3_query.getResult(Cassandra.java:4166)
        at 
org.apache.cassandra.thrift.Cassandra$Processor$execute_prepared_cql3_query.getResult(Cassandra.java:4154)
        at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32)
        at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)
        at 
org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:199)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
        at java.lang.Thread.run(Thread.java:662)


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to