[
https://issues.apache.org/jira/browse/CASSANDRA-3870?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13210153#comment-13210153
]
Sylvain Lebresne commented on CASSANDRA-3870:
---------------------------------------------
I think you're right on the reasons that causes the exception, and that our fix
would avoid that exception. There is however two problems/annoying things (not
really related to the patch per se):
# this break the current property that counter writes at CL.ONE don't have to
wait on the read. In other words, that would increase the latency of CL.ONE
counter writes.
# this completely break counters when replicate_on_write == false. This may not
be a problem anymore on 1.1 if we remove that option (CASSANDRA-3868) but
breaking it in 1.0 (on a minor release) is more problematic.
A "solution" to prevent those two problems would be to add a way to specify
that we don't want to wait on hints being locally written and use that for
counter at CL.ONE, but that means we would skip the current property of 'when a
write returns, we guarantee that all hint for nodes that are *known* dead have
been written locally'. Which leads me to a question: what does that latter
property really give us?
> Internal error processing batch_mutate:
> java.util.ConcurrentModificationException on CounterColumn
> --------------------------------------------------------------------------------------------------
>
> Key: CASSANDRA-3870
> URL: https://issues.apache.org/jira/browse/CASSANDRA-3870
> Project: Cassandra
> Issue Type: Bug
> Affects Versions: 1.0.7
> Environment: Debian 6.0 x64
> x64 Sun Java 6u26
> Cassandra 1.0.7
> JNA
> 2 DCs, 1 ring/DC, 8 nodes/ring, RF=3/DC, Random partitioner.
> Disk access auto (mmap)
> Reporter: Viktor Jevdokimov
> Assignee: Aaron Morton
> Labels: counters
> Attachments: cassandra-1.0-3870.txt
>
>
> Cassandra throws an exception below while performing batch_mutate with
> counter column insertion mutation to increment column with 1:
> ERROR [Thrift:134] 2012-02-03 15:51:02,800 Cassandra.java (line 3462)
> Internal error processing batch_mutate
> 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.utils.FBUtilities.waitOnFutures(FBUtilities.java:532)
> at
> org.apache.cassandra.service.AbstractWriteResponseHandler.waitForHints(AbstractWriteResponseHandler.java:89)
> at
> org.apache.cassandra.service.AbstractWriteResponseHandler.get(AbstractWriteResponseHandler.java:58)
> at
> org.apache.cassandra.service.StorageProxy.mutate(StorageProxy.java:201)
> at
> org.apache.cassandra.thrift.CassandraServer.doInsert(CassandraServer.java:639)
> at
> org.apache.cassandra.thrift.CassandraServer.internal_batch_mutate(CassandraServer.java:590)
> at
> org.apache.cassandra.thrift.CassandraServer.batch_mutate(CassandraServer.java:598)
> at
> org.apache.cassandra.thrift.Cassandra$Processor$batch_mutate.process(Cassandra.java:3454)
> at
> org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:2889)
> at
> org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:187)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> at java.lang.Thread.run(Thread.java:662)
> Column family definition:
> create column family CountersColumnFamily1
> with column_type = 'Standard'
> and comparator = 'BytesType'
> and default_validation_class = 'BytesType'
> and key_validation_class = 'BytesType'
> and rows_cached = 1000000.0
> and row_cache_save_period = 0
> and row_cache_keys_to_save = 2147483647
> and keys_cached = 0.0
> and key_cache_save_period = 14400
> and read_repair_chance = 0.1
> and gc_grace = 43200
> and min_compaction_threshold = 4
> and max_compaction_threshold = 32
> and replicate_on_write = true
> and row_cache_provider = 'SerializingCacheProvider'
> and compaction_strategy =
> 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy';
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira