Author: jbellis Date: Thu Oct 20 21:19:37 2011 New Revision: 1187053 URL: http://svn.apache.org/viewvc?rev=1187053&view=rev Log: tolerate index being dropped mid-mutation, part 2 patch by jbellis; reviewed by slebresne for CASSANDRA-3313
Modified: cassandra/branches/cassandra-1.0/CHANGES.txt cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java Modified: cassandra/branches/cassandra-1.0/CHANGES.txt URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/CHANGES.txt?rev=1187053&r1=1187052&r2=1187053&view=diff ============================================================================== --- cassandra/branches/cassandra-1.0/CHANGES.txt (original) +++ cassandra/branches/cassandra-1.0/CHANGES.txt Thu Oct 20 21:19:37 2011 @@ -45,7 +45,7 @@ * avoid locking on update when no indexes are involved (CASSANDRA-3386) * optimize UUIDGen to avoid lock contention on InetAddress.getLocalHost (CASSANDRA-3387) - * tolerate index being dropped mid-mutation (CASSANDRA-3334) + * tolerate index being dropped mid-mutation (CASSANDRA-3334, 3313) 1.0.0-final Modified: cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java?rev=1187053&r1=1187052&r2=1187053&view=diff ============================================================================== --- cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java (original) +++ cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java Thu Oct 20 21:19:37 2011 @@ -33,6 +33,7 @@ import org.apache.cassandra.io.sstable.R import org.apache.cassandra.io.sstable.SSTableReader; import org.apache.cassandra.thrift.IndexClause; import org.apache.cassandra.thrift.IndexExpression; +import org.apache.cassandra.utils.ByteBufferUtil; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -399,9 +400,13 @@ public class SecondaryIndexManager continue; // null column == row deletion SecondaryIndex index = getIndexForColumn(columnName); - assert index != null; + if (index == null) + { + logger.debug("index on {} removed; skipping remove-old for {}", columnName, ByteBufferUtil.bytesToHex(rowKey)); + continue; + } - //Update entire row if we encounter a row level index + // Update entire row if we encounter a row level index if (index instanceof PerRowSecondaryIndex) { if (appliedRowLevelIndexes == null)