From 8b6ce324bf35210196e0f0ec0665ba87b0f3991f Mon Sep 17 00:00:00 2001 From: Jonathan Ellis Date: Tue, 31 Jul 2012 10:41:26 -0500 Subject: [PATCH] fix CFRR iterating through resultset consisting entirely of tombstones patch by jbellis; tested by Niel Drummand and reviewed by Brandon Williams for CASSANDRA-4466 --- CHANGES.txt | 5 +++++ .../cassandra/hadoop/ColumnFamilyRecordReader.java | 9 ++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index c708aeadcc..222081b0a9 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,8 @@ +1.0.12 + * (Hadoop) fix iterating through a resultset consisting entirely + of tombstoned rows (CASSANDRA-4466) + + 1.0.11 * allow dropping columns shadowed by not-yet-expired supercolumn or row tombstones in PrecompactedRow (CASSANDRA-4396) diff --git a/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java b/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java index 5d0ac727b2..20d6068532 100644 --- a/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java +++ b/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java @@ -307,18 +307,21 @@ public class ColumnFamilyRecordReader extends RecordReader it = rows.iterator(); - while (it.hasNext()) + KeySlice ks; + do { - KeySlice ks = it.next(); + ks = it.next(); if (ks.getColumnsSize() == 0) { it.remove(); } - } + } while (it.hasNext()); // all ghosts, spooky if (rows.isEmpty()) { + // maybeInit assumes it can get the start-with key from the rows collection, so add back the last + rows.add(ks); maybeInit(); return; }