Fix 'Wrong class type' assertion error in CounterColumn

patch by slebresne; reviewed by jbellis for CASSANDRA-4976
This commit is contained in:
Sylvain Lebresne 2012-11-23 10:01:39 +01:00
parent e128ab0022
commit d0292ef45a
2 changed files with 11 additions and 2 deletions

View File

@ -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

View File

@ -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
{