Return-Path: X-Original-To: apmail-cassandra-commits-archive@www.apache.org Delivered-To: apmail-cassandra-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 3018567E3 for ; Wed, 27 Jul 2011 10:44:52 +0000 (UTC) Received: (qmail 54978 invoked by uid 500); 27 Jul 2011 10:39:55 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 54868 invoked by uid 500); 27 Jul 2011 10:39:39 -0000 Mailing-List: contact commits-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cassandra.apache.org Delivered-To: mailing list commits@cassandra.apache.org Received: (qmail 54829 invoked by uid 99); 27 Jul 2011 10:39:34 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 27 Jul 2011 10:39:34 +0000 X-ASF-Spam-Status: No, hits=-1997.6 required=5.0 tests=ALL_TRUSTED,FS_REPLICA,RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 27 Jul 2011 10:39:31 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id 2B0E08B739 for ; Wed, 27 Jul 2011 10:39:10 +0000 (UTC) Date: Wed, 27 Jul 2011 10:39:10 +0000 (UTC) From: "Sylvain Lebresne (JIRA)" To: commits@cassandra.apache.org Message-ID: <516483251.11471.1311763150172.JavaMail.tomcat@hel.zones.apache.org> In-Reply-To: <148948663.8195.1311697270014.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Updated] (CASSANDRA-2949) Batch mutation of counters in multiple supercolumns throws an exception during replication. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org [ 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