cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sylvain Lebresne (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CASSANDRA-2949) Batch mutation of counters in multiple supercolumns throws an exception during replication.
Date Wed, 27 Jul 2011 10:39:10 GMT

     [ https://issues.apache.org/jira/browse/CASSANDRA-2949?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Sylvain Lebresne updated CASSANDRA-2949:
----------------------------------------

    Attachment: 2949_v2.patch

The patch does fix it, but I think there is a better fix. The reason the assertion is triggered
is because when we read to replicate and there is super columns, we end up adding one read
command for each super column (and thus get back multiple time the same CF, which triggers
the assertion). The rational being that we only query the subcolumns that are in the original
mutation.

However, since we deserialize full super columns anyway, it will be more efficient to generate
only one read command for all the super columns (reading full super columns) and to filter
afterwards the subcolumns we don't want to bother sending to the other nodes.

Attaching a "v2" patch that does this. It also ship with a unit test.


> Batch mutation of counters in multiple supercolumns throws an exception during replication.
> -------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-2949
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-2949
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.8.2
>            Reporter: Sam Overton
>            Assignee: Sylvain Lebresne
>            Priority: Critical
>              Labels: batch_mutate, counters, supercolumns
>         Attachments: 2949.patch, 2949_v2.patch
>
>
> Steps to reproduce:
> * Perform a batch mutation of more than one counter in more than one super-column in
the same column-family.
> * The following exception is thrown during replication:
> DEBUG [MutationStage:63] 2011-07-26 17:05:12,653 CounterMutationVerbHandler.java (line
52) Applying forwarded CounterMutation(RowMutation(keyspace='ks1', key='4ae71336e44bf9bf',
modifications=[ColumnFamily(cf1 [SuperColumn(302c7375706572636f6c30 [302c636f6c30:false:8@1311696312648,]),SuperColumn(302c7375706572636f6c31
[302c636f6c30:false:8@1311696312648,]),])]), QUORUM)
> DEBUG [MutationStage:63] 2011-07-26 17:05:12,653 StorageProxy.java (line 432) insert
writing local & replicate CounterMutation(RowMutation(keyspace='ks1', key='4ae71336e44bf9bf',
modifications=[cf1]), QUORUM)
> DEBUG [MutationStage:63] 2011-07-26 17:05:12,654 Table.java (line 398) applying mutation
of row 4ae71336e44bf9bf
> ERROR [ReplicateOnWriteStage:125] 2011-07-26 17:05:12,655 AbstractCassandraDaemon.java
(line 139) Fatal exception in thread Thread[ReplicateOnWriteStage:125,5,main]
> java.lang.RuntimeException: java.lang.IllegalArgumentException: ColumnFamily ColumnFamily(cf1
[SuperColumn(302c7375706572636f6c31 [302c636f6c30:false:[{cad93dc0-b7a0-11e0-0000-123f813dd5df,
3, 3}*]@1311696312648!-9223372036854775808,]),]) already has modifications in this mutation:
ColumnFamily(cf1 [SuperColumn(302c7375706572636f6c30 [302c636f6c30:false:[{cad93dc0-b7a0-11e0-0000-123f813dd5df,
3, 3}*]@1311696312648!-9223372036854775808,]),])
>         at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:34)
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>         at java.lang.Thread.run(Thread.java:636)
> Caused by: java.lang.IllegalArgumentException: ColumnFamily ColumnFamily(cf1 [SuperColumn(302c7375706572636f6c31
[302c636f6c30:false:[{cad93dc0-b7a0-11e0-0000-123f813dd5df, 3, 3}*]@1311696312648!-9223372036854775808,]),])
already has modifications in this mutation: ColumnFamily(cf1 [SuperColumn(302c7375706572636f6c30
[302c636f6c30:false:[{cad93dc0-b7a0-11e0-0000-123f813dd5df, 3, 3}*]@1311696312648!-9223372036854775808,]),])
>         at org.apache.cassandra.db.RowMutation.add(RowMutation.java:123)
>         at org.apache.cassandra.db.CounterMutation.makeReplicationMutation(CounterMutation.java:120)
>         at org.apache.cassandra.service.StorageProxy$5$1.runMayThrow(StorageProxy.java:455)
>         at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:30)
>         ... 3 more

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message