Author: jbellis
Date: Fri Oct 2 18:40:35 2009
New Revision: 821128
URL: http://svn.apache.org/viewvc?rev=821128&view=rev
Log:
fix heisenbug in RecoveryManager2Test where a compaction could add back a new
sstable to the "cleared" ColumnFamilyStore
patch by jbellis; reviewed by junrao for CASSANDRA-463
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java
incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/RecoveryManager2Test.java
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL:
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=821128&r1=821127&r2=821128&view=diff
==============================================================================
---
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
(original)
+++
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
Fri Oct 2 18:40:35 2009
@@ -1011,7 +1011,6 @@
}
}
- /** not threadsafe. caller must have lock_ acquired. */
public Collection<SSTableReader> getSSTables()
{
return ssTables_.getSSTables();
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java
URL:
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java?rev=821128&r1=821127&r2=821128&view=diff
==============================================================================
---
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java
(original)
+++
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java
Fri Oct 2 18:40:35 2009
@@ -228,4 +228,10 @@
{
maximumCompactionThreshold = threshold;
}
+
+ public void disableCompactions()
+ {
+ minimumCompactionThreshold_ = 0;
+ maximumCompactionThreshold = 0;
+ }
}
Modified:
incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/RecoveryManager2Test.java
URL:
http://svn.apache.org/viewvc/incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/RecoveryManager2Test.java?rev=821128&r1=821127&r2=821128&view=diff
==============================================================================
---
incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/RecoveryManager2Test.java
(original)
+++
incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/RecoveryManager2Test.java
Fri Oct 2 18:40:35 2009
@@ -38,21 +38,22 @@
@Test
public void testWithFlush() throws IOException, ExecutionException,
InterruptedException
{
- Table table1 = Table.open("Keyspace1");
- Set<String> keys = new HashSet<String>();
+ CompactionManager.instance().disableCompactions();
for (int i = 0; i < 100; i++)
{
String key = "key" + i;
insertRow(key);
- keys.add(key);
}
- table1.getColumnFamilyStore("Standard1").forceBlockingFlush();
- table1.getColumnFamilyStore("Standard1").clearUnsafe();
+ Table table1 = Table.open("Keyspace1");
+ ColumnFamilyStore cfs = table1.getColumnFamilyStore("Standard1");
+ cfs.forceBlockingFlush();
+
+ cfs.clearUnsafe();
RecoveryManager.doRecovery(); // this is a no-op. is testing this
useful?
- Set<String> foundKeys = new
HashSet<String>(table1.getColumnFamilyStore("Standard1").getKeyRange("", "",
1000).keys);
+ Set<String> foundKeys = new HashSet<String>(cfs.getKeyRange("", "",
1000).keys);
assert foundKeys.equals(Collections.emptySet());
}