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 DF52BE1FE for ; Fri, 23 Nov 2012 09:44:27 +0000 (UTC) Received: (qmail 35033 invoked by uid 500); 23 Nov 2012 09:44:27 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 35001 invoked by uid 500); 23 Nov 2012 09:44:27 -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 34936 invoked by uid 99); 23 Nov 2012 09:44:27 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 23 Nov 2012 09:44:27 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 09992319396; Fri, 23 Nov 2012 09:44:26 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: slebresne@apache.org To: commits@cassandra.apache.org X-Mailer: ASF-Git Admin Mailer Subject: [5/5] git commit: Fix 'Wrong class type' assertion error in CounterColumn Message-Id: <20121123094427.09992319396@tyr.zones.apache.org> Date: Fri, 23 Nov 2012 09:44:26 +0000 (UTC) Fix 'Wrong class type' assertion error in CounterColumn patch by slebresne; reviewed by jbellis for CASSANDRA-4976 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/d0292ef4 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/d0292ef4 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/d0292ef4 Branch: refs/heads/trunk Commit: d0292ef45ad215e3980fc92fe0ef1e9cf5604fa8 Parents: e128ab0 Author: Sylvain Lebresne Authored: Fri Nov 23 10:01:39 2012 +0100 Committer: Sylvain Lebresne Committed: Fri Nov 23 10:01:39 2012 +0100 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../org/apache/cassandra/db/CounterColumn.java | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/d0292ef4/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index b32b3b6..7c653d0 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -21,6 +21,7 @@ * Fix duplicate SSTable reference when stream session failed (CASSANDRA-3306) * Allow static CF definition with compact storage (CASSANDRA-4910) * Fix endless loop/compaction of schema_* CFs due to broken timestamps (CASSANDRA-4880) + * Fix 'wrong class type' assertion in CounterColumn (CASSANDRA-4976) 1.1.6 http://git-wip-us.apache.org/repos/asf/cassandra/blob/d0292ef4/src/java/org/apache/cassandra/db/CounterColumn.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/CounterColumn.java b/src/java/org/apache/cassandra/db/CounterColumn.java index b6e3909..67771a4 100644 --- a/src/java/org/apache/cassandra/db/CounterColumn.java +++ b/src/java/org/apache/cassandra/db/CounterColumn.java @@ -107,10 +107,18 @@ public class CounterColumn extends Column @Override public IColumn diff(IColumn column) { - assert column instanceof CounterColumn : "Wrong class type."; + assert (column instanceof CounterColumn) || (column instanceof DeletedColumn) : "Wrong class type: " + column.getClass(); if (timestamp() < column.timestamp()) return column; + + // Note that if at that point, column can't be a tombstone. Indeed, + // column is the result of merging us with other nodes results, and + // merging a CounterColumn with a tombstone never return a tombstone + // unless that tombstone timestamp is greater that the CounterColumn + // one. + assert !(column instanceof DeletedColumn) : "Wrong class type: " + column.getClass(); + if (timestampOfLastDelete() < ((CounterColumn)column).timestampOfLastDelete()) return column; ContextRelationship rel = contextManager.diff(column.value(), value()); @@ -148,7 +156,7 @@ public class CounterColumn extends Column @Override public IColumn reconcile(IColumn column, Allocator allocator) { - assert (column instanceof CounterColumn) || (column instanceof DeletedColumn) : "Wrong class type."; + assert (column instanceof CounterColumn) || (column instanceof DeletedColumn) : "Wrong class type: " + column.getClass(); if (column.isMarkedForDelete()) // live + tombstone: track last tombstone {