Author: jbellis Date: Wed Oct 19 13:32:53 2011 New Revision: 1186208 URL: http://svn.apache.org/viewvc?rev=1186208&view=rev Log: acquire references during index build patch by jbellis; reviewed by slebresne for CASSANDRA-3314
Modified: cassandra/branches/cassandra-1.0/CHANGES.txt cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/SecondaryIndex.java Modified: cassandra/branches/cassandra-1.0/CHANGES.txt URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/CHANGES.txt?rev=1186208&r1=1186207&r2=1186208&view=diff ============================================================================== --- cassandra/branches/cassandra-1.0/CHANGES.txt (original) +++ cassandra/branches/cassandra-1.0/CHANGES.txt Wed Oct 19 13:32:53 2011 @@ -1,4 +1,6 @@ 1.0.1 + * acquire references during index build to prevent delete problems + on Windows (CASSANDRA-3314) * describe_ring should include datacenter/topology information (CASSANDRA-2882) * Thrift sockets are not properly buffered (CASSANDRA-3261) * performance improvement for bytebufferutil compare function (CASSANDRA-3286) Modified: cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=1186208&r1=1186207&r2=1186208&view=diff ============================================================================== --- cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java (original) +++ cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Wed Oct 19 13:32:53 2011 @@ -562,8 +562,8 @@ public class ColumnFamilyStore implement } logger.info("Loading new SSTable Set for " + table.name + "/" + columnFamily + ": " + sstables); + SSTableReader.acquireReferences(sstables); data.addSSTables(sstables); // this will call updateCacheSizes() for us - logger.info("Requesting a full secondary index re-build for " + table.name + "/" + columnFamily); try { @@ -573,6 +573,10 @@ public class ColumnFamilyStore implement { throw new IOError(e); } + finally + { + SSTableReader.releaseReferences(sstables); + } logger.info("Setting up new generation: " + generation); fileIndexGenerator.set(generation); Modified: cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/SecondaryIndex.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/SecondaryIndex.java?rev=1186208&r1=1186207&r2=1186208&view=diff ============================================================================== --- cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/SecondaryIndex.java (original) +++ cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/SecondaryIndex.java Wed Oct 19 13:32:53 2011 @@ -30,6 +30,7 @@ import org.apache.cassandra.db.SystemTab import org.apache.cassandra.db.compaction.CompactionManager; import org.apache.cassandra.db.index.keys.KeysIndex; import org.apache.cassandra.io.sstable.ReducingKeyIterator; +import org.apache.cassandra.io.sstable.SSTableReader; import org.apache.cassandra.utils.ByteBufferUtil; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; @@ -149,11 +150,11 @@ public abstract class SecondaryIndex for (ColumnDefinition cdef : columnDefs) columnNames.add(cdef.name); - + + Collection<SSTableReader> sstables = baseCfs.markCurrentSSTablesReferenced(); SecondaryIndexBuilder builder = new SecondaryIndexBuilder(baseCfs, columnNames, - new ReducingKeyIterator(baseCfs.getSSTables())); - + new ReducingKeyIterator(sstables)); Future<?> future = CompactionManager.instance.submitIndexBuild(builder); try { @@ -179,6 +180,10 @@ public abstract class SecondaryIndex { throw new IOException(e); } + finally + { + SSTableReader.releaseReferences(sstables); + } logger.info("Index build of " + getIndexName() + " complete"); }