Author: jbellis
Date: Wed May 25 19:09:38 2011
New Revision: 1127636

URL: http://svn.apache.org/viewvc?rev=1127636&view=rev
Log:
fix potential stack overflow during compaction
patch by Shotaro Kamio and jbellis; reviewed by mdennis for CASSANDRA-2626

Modified:
    cassandra/branches/cassandra-0.8.0/CHANGES.txt
    
cassandra/branches/cassandra-0.8.0/src/java/org/apache/cassandra/db/DataTracker.java

Modified: cassandra/branches/cassandra-0.8.0/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8.0/CHANGES.txt?rev=1127636&r1=1127635&r2=1127636&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8.0/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.8.0/CHANGES.txt Wed May 25 19:09:38 2011
@@ -10,6 +10,7 @@
    SimpleStrategy, OldNetworkTopologyStrategy (CASSANDRA-2678)
  * fix exception adding validators to non-string columns (CASSANDRA-2696)
  * avoid instantiating DatabaseDescriptor in JDBC (CASSANDRA-2694)
+ * fix potential stack overflow during compaction (CASSANDRA-2626)
 
 
 0.8.0-rc1

Modified: 
cassandra/branches/cassandra-0.8.0/src/java/org/apache/cassandra/db/DataTracker.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8.0/src/java/org/apache/cassandra/db/DataTracker.java?rev=1127636&r1=1127635&r2=1127636&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8.0/src/java/org/apache/cassandra/db/DataTracker.java
 (original)
+++ 
cassandra/branches/cassandra-0.8.0/src/java/org/apache/cassandra/db/DataTracker.java
 Wed May 25 19:09:38 2011
@@ -29,6 +29,7 @@ import java.util.concurrent.atomic.Atomi
 import java.util.concurrent.atomic.AtomicReference;
 
 import com.google.common.collect.Iterables;
+import org.apache.commons.collections.set.UnmodifiableSet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -453,9 +454,9 @@ public class DataTracker
         public View(Memtable memtable, Set<Memtable> pendingFlush, 
Set<SSTableReader> sstables, Set<SSTableReader> compacting)
         {
             this.memtable = memtable;
-            this.memtablesPendingFlush = 
Collections.unmodifiableSet(pendingFlush);
-            this.sstables = Collections.unmodifiableSet(sstables);
-            this.compacting = Collections.unmodifiableSet(compacting);
+            this.memtablesPendingFlush = pendingFlush instanceof 
UnmodifiableSet ? pendingFlush : Collections.unmodifiableSet(pendingFlush);
+            this.sstables = sstables instanceof UnmodifiableSet ? sstables : 
Collections.unmodifiableSet(sstables);
+            this.compacting = compacting instanceof UnmodifiableSet ? 
compacting : Collections.unmodifiableSet(compacting);
         }
 
         public View switchMemtable(Memtable newMemtable)


Reply via email to