Author: slebresne
Date: Tue Jun 28 07:58:56 2011
New Revision: 1140472

URL: http://svn.apache.org/viewvc?rev=1140472&view=rev
Log:
Avoids race in SystemTable.getCurrentLocalNodeId
patch by slebresne; reviewed by jbellis for CASSANDRA-2824

Modified:
    cassandra/branches/cassandra-0.8/CHANGES.txt
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/SystemTable.java

Modified: cassandra/branches/cassandra-0.8/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/CHANGES.txt?rev=1140472&r1=1140471&r2=1140472&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.8/CHANGES.txt Tue Jun 28 07:58:56 2011
@@ -9,6 +9,7 @@
    to ColumnFamilyInputFormat (CASSANDRA-2807)
  * fix potential NPE while scheduling read repair for range slice
    (CASSANDRA-2823)
+ * Fix race in SystemTable.getCurrentLocalNodeId (CASSANDRA-2824)
 
 
 0.8.1

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/SystemTable.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/SystemTable.java?rev=1140472&r1=1140471&r2=1140472&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/SystemTable.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/SystemTable.java
 Tue Jun 28 07:58:56 2011
@@ -380,6 +380,8 @@ public class SystemTable
         ColumnFamily cf = 
table.getColumnFamilyStore(NODE_ID_CF).getColumnFamily(filter);
         if (cf != null)
         {
+            // Even though gc_grace==0 on System table, we can have a race 
where we get back tombstones (see CASSANDRA-2824)
+            cf = ColumnFamilyStore.removeDeleted(cf, 0);
             assert cf.getColumnCount() <= 1;
             if (cf.getColumnCount() > 0)
                 id = cf.iterator().next().name();


Reply via email to