[ 
https://issues.apache.org/jira/browse/CASSANDRA-7873?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14120631#comment-14120631
 ] 

Jonathan Ellis commented on CASSANDRA-7873:
-------------------------------------------

IIRC we used to use a concurrent Queue for replies, then changed it as an 
optimization.  I don't see CopyOnWrite as doing better, since we expect to 
modify it more often than reading it (once for each reply, vs once when CL is 
achieved).

So I'd vote for synchronize-when-iterating.

> java.util.ConcurrentModificationException seen after selecting from 
> system_auth
> -------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-7873
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-7873
>             Project: Cassandra
>          Issue Type: Bug
>         Environment: OSX and Ubuntu 14.04
>            Reporter: Philip Thompson
>             Fix For: 3.0
>
>
> The dtest auth_test.py:TestAuth.system_auth_ks_is_alterable_test is failing 
> on trunk only with the following stack trace:
> {code}
> Unexpected error in node1 node log:
> ERROR [Thrift:1] 2014-09-03 15:48:08,389 CustomTThreadPoolServer.java:219 - 
> Error occurred during processing of message.
> java.util.ConcurrentModificationException: null
>       at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859) 
> ~[na:1.7.0_65]
>       at java.util.ArrayList$Itr.next(ArrayList.java:831) ~[na:1.7.0_65]
>       at 
> org.apache.cassandra.service.RowDigestResolver.resolve(RowDigestResolver.java:71)
>  ~[main/:na]
>       at 
> org.apache.cassandra.service.RowDigestResolver.resolve(RowDigestResolver.java:28)
>  ~[main/:na]
>       at org.apache.cassandra.service.ReadCallback.get(ReadCallback.java:110) 
> ~[main/:na]
>       at 
> org.apache.cassandra.service.AbstractReadExecutor.get(AbstractReadExecutor.java:144)
>  ~[main/:na]
>       at 
> org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1228) 
> ~[main/:na]
>       at 
> org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1154) 
> ~[main/:na]
>       at 
> org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:256)
>  ~[main/:na]
>       at 
> org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:212)
>  ~[main/:na]
>       at org.apache.cassandra.auth.Auth.selectUser(Auth.java:257) ~[main/:na]
>       at org.apache.cassandra.auth.Auth.isExistingUser(Auth.java:76) 
> ~[main/:na]
>       at org.apache.cassandra.service.ClientState.login(ClientState.java:178) 
> ~[main/:na]
>       at 
> org.apache.cassandra.thrift.CassandraServer.login(CassandraServer.java:1486) 
> ~[main/:na]
>       at 
> org.apache.cassandra.thrift.Cassandra$Processor$login.getResult(Cassandra.java:3579)
>  ~[thrift/:na]
>       at 
> org.apache.cassandra.thrift.Cassandra$Processor$login.getResult(Cassandra.java:3563)
>  ~[thrift/:na]
>       at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39) 
> ~[libthrift-0.9.1.jar:0.9.1]
>       at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39) 
> ~[libthrift-0.9.1.jar:0.9.1]
>       at 
> org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:201)
>  ~[main/:na]
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>  [na:1.7.0_65]
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>  [na:1.7.0_65]
>       at java.lang.Thread.run(Thread.java:745) [na:1.7.0_65]
> {code}
> That exception is thrown when the following query is sent:
> {code}
> """SELECT strategy_options
>                           FROM system.schema_keyspaces
>                           WHERE keyspace_name = 'system_auth'"""
> {code}
> The test alters the RF of the system_auth keyspace, then shuts down and 
> restarts the cluster.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to