From 8c52cc0e7f67378d66093c958558e765b682888f Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Fri, 14 Mar 2014 14:46:53 -0500 Subject: [PATCH 1/2] Fix failing pig test Patch by Alex Liu, reviewed by brandonwilliams for CASSANDRA-6376 --- .../org/apache/cassandra/pig/CqlTableTest.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/test/unit/org/apache/cassandra/pig/CqlTableTest.java b/test/unit/org/apache/cassandra/pig/CqlTableTest.java index 785d81947b..55586c7fdc 100644 --- a/test/unit/org/apache/cassandra/pig/CqlTableTest.java +++ b/test/unit/org/apache/cassandra/pig/CqlTableTest.java @@ -174,18 +174,18 @@ public class CqlTableTest extends PigTestBase pig.registerQuery("STORE recs INTO 'cql://cql3ks/collectiontable?" + defaultParameters + "&output_query=update+cql3ks.collectiontable+set+n+%3D+%3F' USING CqlStorage();"); pig.executeBatch(); - //(book2,((m,mm),(n,nn))) - //(book3,((m,mm),(n,nn))) - //(book4,((m,mm),(n,nn))) - //(book1,((m,mm),(n,nn))) + //(book2,((key2, value2),(m,mm),(n,nn))) + //(book3,((key3, value3),(m,mm),(n,nn))) + //(book4,((key4, value4),(m,mm),(n,nn))) + //(book1,((key1, value1),(m,mm),(n,nn))) pig.registerQuery("result= LOAD 'cql://cql3ks/collectiontable?" + defaultParameters + "' USING CqlStorage();"); Iterator it = pig.openIterator("result"); - if (it.hasNext()) { + while (it.hasNext()) { Tuple t = it.next(); Tuple t1 = (Tuple) t.get(1); - Assert.assertEquals(t1.size(), 2); - Tuple element1 = (Tuple) t1.get(0); - Tuple element2 = (Tuple) t1.get(1); + Assert.assertEquals(t1.size(), 3); + Tuple element1 = (Tuple) t1.get(1); + Tuple element2 = (Tuple) t1.get(2); Assert.assertEquals(element1.get(0), "m"); Assert.assertEquals(element1.get(1), "mm"); Assert.assertEquals(element2.get(0), "n"); From 57c5969e1dac82c6a676668edf1dc5ba64bcbf1f Mon Sep 17 00:00:00 2001 From: Jonathan Ellis Date: Fri, 14 Mar 2014 15:39:19 -0500 Subject: [PATCH 2/2] Log more information when exceeding tombstone_warn_threshold patch by Oleg Anastasyev; reviewed by jbellis for CASSANDRA-6865 --- CHANGES.txt | 1 + .../cassandra/db/filter/SliceQueryFilter.java | 20 +++++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 045e4f82c9..61b1ee1dde 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 2.0.7 + * Log more information when exceeding tombstone_warn_threshold (CASSANDRA-6865) * Fix truncate to not abort due to unreachable fat clients (CASSANDRA-6864) * Fix schema concurrency exceptions (CASSANDRA-6841) * Fix leaking validator FH in StreamWriter (CASSANDRA-6832) diff --git a/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java b/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java index b43308fa5b..356418ee86 100644 --- a/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java +++ b/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java @@ -207,8 +207,24 @@ public class SliceQueryFilter implements IDiskAtomFilter Tracing.trace("Read {} live and {} tombstoned cells", columnCounter.live(), columnCounter.ignored()); if (respectTombstoneThresholds() && columnCounter.ignored() > DatabaseDescriptor.getTombstoneWarnThreshold()) - logger.warn("Read {} live and {} tombstoned cells in {}.{} (see tombstone_warn_threshold)", - columnCounter.live(), columnCounter.ignored(), container.metadata().ksName, container.metadata().cfName); + { + StringBuilder sb = new StringBuilder(); + AbstractType type = container.metadata().comparator; + for (ColumnSlice sl : slices) + { + if (sl == null) + continue; + + sb.append('['); + sb.append(type.getString(sl.start)); + sb.append('-'); + sb.append(type.getString(sl.finish)); + sb.append(']'); + } + + logger.warn("Read {} live and {} tombstoned cells in {}.{} (see tombstone_warn_threshold). {} columns was requested, slices={}, delInfo={}", + columnCounter.live(), columnCounter.ignored(), container.metadata().ksName, container.metadata().cfName, count, sb, container.deletionInfo()); + } } protected boolean respectTombstoneThresholds()