From 40a13696e40ce24e8331ef5e500228d862b5945a Mon Sep 17 00:00:00 2001 From: Jonathan Ellis Date: Mon, 23 May 2011 14:21:20 +0000 Subject: [PATCH 1/3] avoid replaying hints to dropped columnfamilies patch by jbellis; reviewed by gdusbabek for CASSANDRA-2685 git-svn-id: https://svn.apache.org/repos/asf/cassandra/branches/cassandra-0.7@1126498 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES.txt | 1 + .../org/apache/cassandra/db/HintedHandOffManager.java | 8 +++++++- src/java/org/apache/cassandra/db/Table.java | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGES.txt b/CHANGES.txt index 3be9c2ac9b..0f298967ff 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -5,6 +5,7 @@ buffers again, especially on CL writes (CASSANDRA-2660) * don't perform HH to client-mode [storageproxy] nodes (CASSANDRA-2668) * fix IntegerType.getString with direct buffers (CASSANDRA-2684) + * avoid replaying hints to dropped columnfamilies (CASSANDRA-2685) 0.7.6 diff --git a/src/java/org/apache/cassandra/db/HintedHandOffManager.java b/src/java/org/apache/cassandra/db/HintedHandOffManager.java index 431836c79a..9e92a52c8f 100644 --- a/src/java/org/apache/cassandra/db/HintedHandOffManager.java +++ b/src/java/org/apache/cassandra/db/HintedHandOffManager.java @@ -30,6 +30,7 @@ import java.util.concurrent.TimeoutException; import static com.google.common.base.Charsets.UTF_8; +import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.utils.FBUtilities; import org.apache.commons.lang.ArrayUtils; import org.slf4j.Logger; @@ -128,8 +129,12 @@ public class HintedHandOffManager implements HintedHandOffManagerMBean return false; } + if (CFMetaData.getId(tableName, cfName) == null) + { + logger_.debug("Discarding hints for dropped keyspace or columnfamily {}/{}", tableName, cfName); + return true; + } Table table = Table.open(tableName); - DecoratedKey dkey = StorageService.getPartitioner().decorateKey(key); ColumnFamilyStore cfs = table.getColumnFamilyStore(cfName); int pageSize = PAGE_SIZE; @@ -142,6 +147,7 @@ public class HintedHandOffManager implements HintedHandOffManagerMBean logger_.debug("average hinted-row column size is {}; using pageSize of {}", averageColumnSize, pageSize); } + DecoratedKey dkey = StorageService.getPartitioner().decorateKey(key); ByteBuffer startColumn = ByteBufferUtil.EMPTY_BYTE_BUFFER; while (true) { diff --git a/src/java/org/apache/cassandra/db/Table.java b/src/java/org/apache/cassandra/db/Table.java index 063f94c14f..f6bb0096b6 100644 --- a/src/java/org/apache/cassandra/db/Table.java +++ b/src/java/org/apache/cassandra/db/Table.java @@ -207,6 +207,7 @@ public class Table { name = table; KSMetaData ksm = DatabaseDescriptor.getKSMetaData(table); + assert ksm != null : "Unknown keyspace " + table; try { createReplicationStrategy(ksm); From 9b5dc278d182f34744b24fbd9d9ea5f178834b15 Mon Sep 17 00:00:00 2001 From: Jonathan Ellis Date: Mon, 23 May 2011 14:23:36 +0000 Subject: [PATCH 2/3] add placeholders formissingrows inrange query pseudo-RR patch by jbellis; reviewed by slebresne for CASSANDRA-2680 git-svn-id: https://svn.apache.org/repos/asf/cassandra/branches/cassandra-0.7@1126502 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES.txt | 1 + .../service/RangeSliceResponseResolver.java | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 0f298967ff..73a1e747cb 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -6,6 +6,7 @@ * don't perform HH to client-mode [storageproxy] nodes (CASSANDRA-2668) * fix IntegerType.getString with direct buffers (CASSANDRA-2684) * avoid replaying hints to dropped columnfamilies (CASSANDRA-2685) + * add placeholders for missing rows in range query pseudo-RR (CASSANDRA-2680) 0.7.6 diff --git a/src/java/org/apache/cassandra/service/RangeSliceResponseResolver.java b/src/java/org/apache/cassandra/service/RangeSliceResponseResolver.java index d90c0a5db3..e4b3c0a2aa 100644 --- a/src/java/org/apache/cassandra/service/RangeSliceResponseResolver.java +++ b/src/java/org/apache/cassandra/service/RangeSliceResponseResolver.java @@ -24,8 +24,6 @@ import java.util.*; import java.util.concurrent.LinkedBlockingQueue; import com.google.common.collect.AbstractIterator; -import com.google.common.collect.Iterables; -import com.google.common.collect.Iterators; import org.apache.commons.collections.iterators.CollatingIterator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -104,7 +102,21 @@ public class RangeSliceResponseResolver implements IResponseResolver 1 + ? RowRepairResolver.resolveSuperset(versions) + : versions.get(0); + if (versions.size() < sources.size()) + { + // add placeholder rows for sources that didn't have any data, so maybeScheduleRepairs sees them + for (InetAddress source : sources) + { + if (!versionSources.contains(source)) + { + versions.add(null); + versionSources.add(source); + } + } + } RowRepairResolver.maybeScheduleRepairs(resolved, table, key, versions, versionSources); versions.clear(); versionSources.clear(); From 8becda0810ef47fa354041ce57dbca64bdc27d8d Mon Sep 17 00:00:00 2001 From: Sylvain Lebresne Date: Mon, 23 May 2011 18:32:00 +0000 Subject: [PATCH 3/3] Make the release build fail if the publish to central repository also fails patch by stephenc; reviewed by slebresne for CASSANDRA-2690 git-svn-id: https://svn.apache.org/repos/asf/cassandra/branches/cassandra-0.7@1126639 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.xml b/build.xml index b3ef9e2e7e..13fc1aaeae 100644 --- a/build.xml +++ b/build.xml @@ -237,7 +237,7 @@ url=${svn.entry.url}?pathrev=${svn.entry.commit.revision} - + @@ -253,7 +253,7 @@ url=${svn.entry.url}?pathrev=${svn.entry.commit.revision} - +