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