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");
}