Author: slebresne Date: Tue Jun 28 07:53:08 2011 New Revision: 1140470 URL: http://svn.apache.org/viewvc?rev=1140470&view=rev Log: Fix potential NPE in range slice read repair patch by slebresne; reviewed by jbellis for CASSANDRA-2823
Modified: cassandra/branches/cassandra-0.8/CHANGES.txt cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/RangeSliceResponseResolver.java cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/RowRepairResolver.java Modified: cassandra/branches/cassandra-0.8/CHANGES.txt URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/CHANGES.txt?rev=1140470&r1=1140469&r2=1140470&view=diff ============================================================================== --- cassandra/branches/cassandra-0.8/CHANGES.txt (original) +++ cassandra/branches/cassandra-0.8/CHANGES.txt Tue Jun 28 07:53:08 2011 @@ -7,6 +7,8 @@ * add ability to return "endpoints" to nodetool (CASSANDRA-2776) * Add support for multiple (comma-delimited) coordinator addresses to ColumnFamilyInputFormat (CASSANDRA-2807) + * fix potential NPE while scheduling read repair for range slice + (CASSANDRA-2823) 0.8.1 Modified: cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/RangeSliceResponseResolver.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/RangeSliceResponseResolver.java?rev=1140470&r1=1140469&r2=1140470&view=diff ============================================================================== --- cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/RangeSliceResponseResolver.java (original) +++ cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/RangeSliceResponseResolver.java Tue Jun 28 07:53:08 2011 @@ -117,7 +117,9 @@ public class RangeSliceResponseResolver } } } - RowRepairResolver.maybeScheduleRepairs(resolved, table, key, versions, versionSources); + // resolved can be null even if versions doesn't have all nulls because of the call to removeDeleted in resolveSuperSet + if (resolved != null) + RowRepairResolver.maybeScheduleRepairs(resolved, table, key, versions, versionSources); versions.clear(); versionSources.clear(); return new Row(key, resolved); Modified: cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/RowRepairResolver.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/RowRepairResolver.java?rev=1140470&r1=1140469&r2=1140470&view=diff ============================================================================== --- cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/RowRepairResolver.java (original) +++ cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/RowRepairResolver.java Tue Jun 28 07:53:08 2011 @@ -80,7 +80,9 @@ public class RowRepairResolver extends A resolved = resolveSuperset(versions); if (logger.isDebugEnabled()) logger.debug("versions merged"); - maybeScheduleRepairs(resolved, table, key, versions, endpoints); + // resolved can be null even if versions doesn't have all nulls because of the call to removeDeleted in resolveSuperSet + if (resolved != null) + maybeScheduleRepairs(resolved, table, key, versions, endpoints); } else {