You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2011/06/28 09:58:57 UTC

svn commit: r1140472 - in /cassandra/branches/cassandra-0.8: CHANGES.txt src/java/org/apache/cassandra/db/SystemTable.java

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();