From e0f5809386760f29147ccc16910dfe4ad83e1c31 Mon Sep 17 00:00:00 2001 From: Jonathan Ellis Date: Thu, 26 Nov 2009 14:58:10 +0000 Subject: [PATCH] avoid adding CFs w/ no data to RowMutation on HH patch by jbellis; tested by Dan Di Spaltro for CASSANDRA-585 git-svn-id: https://svn.apache.org/repos/asf/incubator/cassandra/trunk@884571 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES.txt | 1 + src/java/org/apache/cassandra/db/HintedHandOffManager.java | 4 +++- src/java/org/apache/cassandra/db/RowMutation.java | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGES.txt b/CHANGES.txt index 08d1bb10d5..87c9b59b19 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -3,6 +3,7 @@ * fix possibility of partition when many nodes restart at once in clusters with multiple seeds (CASSANDRA-150) * fix NPE in get_range_slice when no data is found (CASSANDRA-578) + * fix potential NPE in hinted handoff (CASSANDRA-585) 0.5.0 beta diff --git a/src/java/org/apache/cassandra/db/HintedHandOffManager.java b/src/java/org/apache/cassandra/db/HintedHandOffManager.java index 43fb958992..55c0d62060 100644 --- a/src/java/org/apache/cassandra/db/HintedHandOffManager.java +++ b/src/java/org/apache/cassandra/db/HintedHandOffManager.java @@ -112,7 +112,9 @@ public class HintedHandOffManager RowMutation rm = new RowMutation(tableName, key); for (ColumnFamilyStore cfstore : table.getColumnFamilyStores().values()) { - rm.add(cfstore.getColumnFamily(new IdentityQueryFilter(key, new QueryPath(cfstore.getColumnFamilyName())))); + ColumnFamily cf = cfstore.getColumnFamily(new IdentityQueryFilter(key, new QueryPath(cfstore.getColumnFamilyName()))); + if (cf != null) + rm.add(cf); } Message message = rm.makeRowMutationMessage(); WriteResponseHandler responseHandler = new WriteResponseHandler(1); diff --git a/src/java/org/apache/cassandra/db/RowMutation.java b/src/java/org/apache/cassandra/db/RowMutation.java index 7724bf1c75..76d692e4be 100644 --- a/src/java/org/apache/cassandra/db/RowMutation.java +++ b/src/java/org/apache/cassandra/db/RowMutation.java @@ -116,6 +116,7 @@ public class RowMutation implements Serializable */ public void add(ColumnFamily columnFamily) { + assert columnFamily != null; if (modifications_.containsKey(columnFamily.name())) { throw new IllegalArgumentException("ColumnFamily " + columnFamily.name() + " is already being modified");