Author: jbellis
Date: Thu Oct 20 21:20:51 2011
New Revision: 1187054

URL: http://svn.apache.org/viewvc?rev=1187054&view=rev
Log:
merge from 1.0

Modified:
    cassandra/trunk/   (props changed)
    cassandra/trunk/CHANGES.txt
    cassandra/trunk/contrib/   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
   (props changed)
    cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java
    cassandra/trunk/src/java/org/apache/cassandra/db/Table.java
    
cassandra/trunk/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
    cassandra/trunk/src/java/org/apache/cassandra/db/index/keys/KeysIndex.java
    cassandra/trunk/src/java/org/apache/cassandra/net/MessagingService.java
    cassandra/trunk/src/java/org/apache/cassandra/utils/UUIDGen.java

Propchange: cassandra/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Oct 20 21:20:51 2011
@@ -1,10 +1,10 @@
 
/cassandra/branches/cassandra-0.6:922689-1052356,1052358-1053452,1053454,1053456-1131291
 /cassandra/branches/cassandra-0.7:1026516-1183000
 /cassandra/branches/cassandra-0.7.0:1053690-1055654
-/cassandra/branches/cassandra-0.8:1090934-1125013,1125019-1185965
+/cassandra/branches/cassandra-0.8:1090934-1125013,1125019-1186803
 /cassandra/branches/cassandra-0.8.0:1125021-1130369
 /cassandra/branches/cassandra-0.8.1:1101014-1125018
-/cassandra/branches/cassandra-1.0:1167085-1186208,1186796
+/cassandra/branches/cassandra-1.0:1167085-1187053
 
/cassandra/branches/cassandra-1.0.0:1167104-1167229,1167232-1181093,1181741,1181816,1181820,1182951,1183243
 /cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689
 /cassandra/tags/cassandra-0.8.0-rc1:1102511-1125020

Modified: cassandra/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1187054&r1=1187053&r2=1187054&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Thu Oct 20 21:20:51 2011
@@ -16,6 +16,12 @@
  * reduce network copies (CASSANDRA-3333, 3373)
  * (Hadoop) skip empty rows when slicing the entire row (CASSANDRA-2855)
  * fix ColumnIndexer to use long offsets (CASSANDRA-3358)
+ * Fix exception during PIG 'dump' (CASSANDRA-2810)
+ * Fix transposition in cfHistograms (CASSANDRA-3222)
+ * Allow using number as DC name when creating keyspace in CQL (CASSANDRA-3239)
+ * Force flush of system table after updating/removing a token (CASSANDRA-3243)
+ * Make Pig storage handle implements LoadMetadata (CASSANDRA-2777)
+ * Improved CLI exceptions (CASSANDRA-3312)
  * Fix handling of tombstone by SSTableExport/Import (CASSANDRA-3357)
  * Only count compaction as active (for throttling) when they have
    successfully acquired the compaction lock (CASSANDRA-3344)
@@ -40,6 +46,10 @@
    (CASSANDRA-3292)
  * fix Deflate compression when compression actually makes the data bigger
    (CASSANDRA-3370)
+ * avoid locking on update when no indexes are involved (CASSANDRA-3386)
+ * optimize UUIDGen to avoid lock contention on InetAddress.getLocalHost 
+   (CASSANDRA-3387)
+ * tolerate index being dropped mid-mutation (CASSANDRA-3334, 3313)
 
 
 1.0.0-final
@@ -63,6 +73,7 @@
 Fixes merged from 0.8 below:
  * Fix tool .bat files when CASSANDRA_HOME contains spaces (CASSANDRA-3258)
  * Force flush of status table when removing/updating token (CASSANDRA-3243)
+ * Evict gossip state immediately when a token is taken over by a new IP 
(CASSANDRA-3259)
  * Fix bug where the failure detector can take too long to mark a host
    down (CASSANDRA-3273)
  * (Hadoop) allow wrapping ranges in queries (CASSANDRA-3137)
@@ -73,12 +84,7 @@ Fixes merged from 0.8 below:
  * Nodetool no longer leaks threads and closes JMX connections (CASSANDRA-3309)
  * fix truncate allowing data to be replayed post-restart (CASSANDRA-3297)
  * Move SimpleAuthority and SimpleAuthenticator to examples (CASSANDRA-2922)
- * Fix exception during PIG 'dump' (CASSANDRA-2810)
- * Fix transposition in cfHistograms (CASSANDRA-3222)
- * Allow using number as DC name when creating keyspace in CQL (CASSANDRA-3239)
- * Force flush of system table after updating/removing a token (CASSANDRA-3243)
- * Make Pig storage handle implements LoadMetadata (CASSANDRA-2777)
- * Improved CLI exceptions (CASSANDRA-3312)
+ * Fix handling of tombstone by SSTableExport/Import (CASSANDRA-3357)
 
 
 1.0.0-rc2

Propchange: cassandra/trunk/contrib/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Oct 20 21:20:51 2011
@@ -1,10 +1,10 @@
 
/cassandra/branches/cassandra-0.6/contrib:922689-1052356,1052358-1053452,1053454,1053456-1068009
 /cassandra/branches/cassandra-0.7/contrib:1026516-1183000
 /cassandra/branches/cassandra-0.7.0/contrib:1053690-1055654
-/cassandra/branches/cassandra-0.8/contrib:1090934-1125013,1125019-1185965
+/cassandra/branches/cassandra-0.8/contrib:1090934-1125013,1125019-1186803
 /cassandra/branches/cassandra-0.8.0/contrib:1125021-1130369
 /cassandra/branches/cassandra-0.8.1/contrib:1101014-1125018
-/cassandra/branches/cassandra-1.0/contrib:1167085-1186208,1186796
+/cassandra/branches/cassandra-1.0/contrib:1167085-1187053
 
/cassandra/branches/cassandra-1.0.0/contrib:1167104-1167229,1167232-1181093,1181741,1181816,1181820,1182951,1183243
 /cassandra/tags/cassandra-0.7.0-rc3/contrib:1051699-1053689
 /cassandra/tags/cassandra-0.8.0-rc1/contrib:1102511-1125020

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Oct 20 21:20:51 2011
@@ -1,10 +1,10 @@
 
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
 
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1183000
 
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090934-1125013,1125019-1185965
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090934-1125013,1125019-1186803
 
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1125021-1130369
 
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1101014-1125018
-/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1167085-1186208,1186796
+/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1167085-1187053
 
/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1167104-1167229,1167232-1181093,1181741,1181816,1181820,1182951,1183243
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689
 
/cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1102511-1125020

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Oct 20 21:20:51 2011
@@ -1,10 +1,10 @@
 
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
 
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1183000
 
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090934-1125013,1125019-1185965
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090934-1125013,1125019-1186803
 
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1125021-1130369
 
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1101014-1125018
-/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1167085-1186208,1186796
+/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1167085-1187053
 
/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1167104-1167229,1167232-1181093,1181741,1181816,1181820,1182951,1183243
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1051699-1053689
 
/cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1102511-1125020

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Oct 20 21:20:51 2011
@@ -1,10 +1,10 @@
 
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
 
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1183000
 
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090934-1125013,1125019-1185965
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090934-1125013,1125019-1186803
 
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1125021-1130369
 
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1101014-1125018
-/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1167085-1186208,1186796
+/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1167085-1187053
 
/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1167104-1167229,1167232-1181093,1181741,1181816,1181820,1182951,1183243
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1051699-1053689
 
/cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1102511-1125020

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Oct 20 21:20:51 2011
@@ -1,10 +1,10 @@
 
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
 
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1183000
 
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090934-1125013,1125019-1185965
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090934-1125013,1125019-1186803
 
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1125021-1130369
 
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1101014-1125018
-/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1167085-1186208,1186796
+/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1167085-1187053
 
/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1167104-1167229,1167232-1181093,1181741,1181816,1181820,1182951,1183243
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1051699-1053689
 
/cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1102511-1125020

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Oct 20 21:20:51 2011
@@ -1,10 +1,10 @@
 
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
 
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1183000
 
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090934-1125013,1125019-1185965
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090934-1125013,1125019-1186803
 
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1125021-1130369
 
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1101014-1125018
-/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1167085-1186208,1186796
+/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1167085-1187053
 
/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1167104-1167229,1167232-1181093,1181741,1181816,1181820,1182951,1183243
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1051699-1053689
 
/cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1102511-1125020

Modified: cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java?rev=1187054&r1=1187053&r2=1187054&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java Thu Oct 20 
21:20:51 2011
@@ -1975,6 +1975,7 @@ public class CliClient
         sessionState.out.printf("      Row cache size / save period in seconds 
/ keys to save : %s/%s/%s%n",
                 cf_def.row_cache_size, cf_def.row_cache_save_period_in_seconds,
                 cf_def.row_cache_keys_to_save == Integer.MAX_VALUE ? "all" : 
cf_def.row_cache_keys_to_save);
+        sessionState.out.printf("      Row Cache Provider: %s%n", 
cf_def.getRow_cache_provider());
         sessionState.out.printf("      Key cache size / save period in 
seconds: %s/%s%n", cf_def.key_cache_size, 
cf_def.key_cache_save_period_in_seconds);
         sessionState.out.printf("      GC grace seconds: %s%n", 
cf_def.gc_grace_seconds);
         sessionState.out.printf("      Compaction min/max thresholds: 
%s/%s%n", cf_def.min_compaction_threshold, cf_def.max_compaction_threshold);

Modified: cassandra/trunk/src/java/org/apache/cassandra/db/Table.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java?rev=1187054&r1=1187053&r2=1187054&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/Table.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/Table.java Thu Oct 20 
21:20:51 2011
@@ -426,26 +426,29 @@ public class Table
                     }
                 }
 
+                // Sharding the lock is insufficient to avoid contention when 
there is a "hot" row, e.g., for
+                // hint writes when a node is down (keyed by target IP).  So 
it is worth special-casing the
+                // no-index case to avoid the synchronization.
+                if (mutatedIndexedColumns == null)
+                {
+                    cfs.apply(key, cf);
+                    continue;
+                }
+                // else mutatedIndexedColumns != null
                 synchronized (indexLockFor(mutation.key()))
                 {
-                    ColumnFamily oldIndexedColumns = null;
-                    if (mutatedIndexedColumns != null)
-                    {
-                        // with the raw data CF, we can just apply every 
update in any order and let
-                        // read-time resolution throw out obsolete versions, 
thus avoiding read-before-write.
-                        // but for indexed data we need to make sure that 
we're not creating index entries
-                        // for obsolete writes.
-                        oldIndexedColumns = readCurrentIndexedColumns(key, 
cfs, mutatedIndexedColumns);
-                        logger.debug("Pre-mutation index row is {}", 
oldIndexedColumns);
-                        ignoreObsoleteMutations(cf, mutatedIndexedColumns, 
oldIndexedColumns);
-                    }
+                    // with the raw data CF, we can just apply every update in 
any order and let
+                    // read-time resolution throw out obsolete versions, thus 
avoiding read-before-write.
+                    // but for indexed data we need to make sure that we're 
not creating index entries
+                    // for obsolete writes.
+                    ColumnFamily oldIndexedColumns = 
readCurrentIndexedColumns(key, cfs, mutatedIndexedColumns);
+                    logger.debug("Pre-mutation index row is {}", 
oldIndexedColumns);
+                    ignoreObsoleteMutations(cf, mutatedIndexedColumns, 
oldIndexedColumns);
 
                     cfs.apply(key, cf);
-                    if (mutatedIndexedColumns != null)
-                    {
-                        // ignore full index memtables -- we flush those when 
the "master" one is full
-                        cfs.indexManager.applyIndexUpdates(mutation.key(), cf, 
mutatedIndexedColumns, oldIndexedColumns);
-                    }
+
+                    // ignore full index memtables -- we flush those when the 
"master" one is full
+                    cfs.indexManager.applyIndexUpdates(mutation.key(), cf, 
mutatedIndexedColumns, oldIndexedColumns);
                 }
             }
         }

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java?rev=1187054&r1=1187053&r2=1187054&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
 (original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
 Thu Oct 20 21:20:51 2011
@@ -33,6 +33,7 @@ import org.apache.cassandra.io.sstable.R
 import org.apache.cassandra.io.sstable.SSTableReader;
 import org.apache.cassandra.thrift.IndexClause;
 import org.apache.cassandra.thrift.IndexExpression;
+import org.apache.cassandra.utils.ByteBufferUtil;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -153,20 +154,18 @@ public class SecondaryIndexManager
         if (index == null)
             return;
         
-        SystemTable.setIndexRemoved(baseCfs.metadata.ksName, 
index.getNameForSystemTable(column));
-        
-        index.removeIndex(column);
-        
         // Remove this column from from row level index map
         if (index instanceof PerRowSecondaryIndex)
         {
             index.removeColumnDef(column);
-            
+
             //If now columns left on this CF remove from row level lookup
             if (index.getColumnDefs().isEmpty())
                 rowLevelIndexMap.remove(index.getClass());
         }
-        
+
+        index.removeIndex(column);
+        SystemTable.setIndexRemoved(baseCfs.metadata.ksName, 
index.getNameForSystemTable(column));
     }
 
     /**
@@ -369,9 +368,13 @@ public class SecondaryIndexManager
                     continue;              
                 
                 SecondaryIndex index = getIndexForColumn(columnName);
-                assert index != null;               
-
-                //Update entire row if we encounter a row level index
+                if (index == null)
+                {
+                    logger.debug("Looks like index got dropped mid-update.  
Skipping");
+                    continue;
+                }
+                
+                // Update entire row if we encounter a row level index
                 if (index instanceof PerRowSecondaryIndex)
                 {
                     if (appliedRowLevelIndexes == null)
@@ -397,9 +400,13 @@ public class SecondaryIndexManager
                 continue; // null column == row deletion
 
             SecondaryIndex index = getIndexForColumn(columnName);
-            assert index != null;
+            if (index == null)
+            {
+                logger.debug("index on {} removed; skipping remove-old for 
{}", columnName, ByteBufferUtil.bytesToHex(rowKey));
+                continue;
+            }
 
-            //Update entire row if we encounter a row level index
+            // Update entire row if we encounter a row level index
             if (index instanceof PerRowSecondaryIndex)
             {
                 if (appliedRowLevelIndexes == null)
@@ -448,8 +455,7 @@ public class SecondaryIndexManager
             else
             {
                 DecoratedKey<LocalToken> valueKey = 
getIndexKeyFor(column.name(), column.value());
-
-                ((PerColumnSecondaryIndex)index).deleteColumn(valueKey, 
key.key, column);
+                ((PerColumnSecondaryIndex) index).deleteColumn(valueKey, 
key.key, column);
             }
         }       
     }

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/db/index/keys/KeysIndex.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/index/keys/KeysIndex.java?rev=1187054&r1=1187053&r2=1187054&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/index/keys/KeysIndex.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/index/keys/KeysIndex.java 
Thu Oct 20 21:20:51 2011
@@ -45,9 +45,8 @@ import org.slf4j.LoggerFactory;
 public class KeysIndex extends PerColumnSecondaryIndex
 {
     private static final Logger logger = 
LoggerFactory.getLogger(KeysIndex.class);
-    private ColumnFamilyStore indexedCfs;
-    private ColumnDefinition  columnDef;
-    
+    private ColumnFamilyStore indexCfs;
+
     public KeysIndex() 
     {
     }
@@ -55,11 +54,10 @@ public class KeysIndex extends PerColumn
     public void init()
     {
         assert baseCfs != null && columnDefs != null;
-        
-        columnDef = columnDefs.iterator().next();
-        
-        CFMetaData indexedCfMetadata = 
CFMetaData.newIndexMetadata(baseCfs.metadata, columnDef, indexComparator());
-        indexedCfs = ColumnFamilyStore.createColumnFamilyStore(baseCfs.table,
+
+        ColumnDefinition columnDef = columnDefs.iterator().next();
+        CFMetaData indexedCfMetadata = 
CFMetaData.newIndexMetadata(baseCfs.metadata, columnDef,indexComparator());
+        indexCfs = ColumnFamilyStore.createColumnFamilyStore(baseCfs.table,
                                                                
indexedCfMetadata.cfName,
                                                                new 
LocalPartitioner(columnDef.getValidator()),
                                                                
indexedCfMetadata);
@@ -80,9 +78,9 @@ public class KeysIndex extends PerColumn
             return;
         
         int localDeletionTime = (int) (System.currentTimeMillis() / 1000);
-        ColumnFamily cfi = ColumnFamily.create(indexedCfs.metadata);
+        ColumnFamily cfi = ColumnFamily.create(indexCfs.metadata);
         cfi.addTombstone(rowKey, localDeletionTime, column.timestamp());
-        indexedCfs.apply(valueKey, cfi);
+        indexCfs.apply(valueKey, cfi);
         if (logger.isDebugEnabled())
             logger.debug("removed index entry for cleaned-up value {}:{}", 
valueKey, cfi);
     }
@@ -90,7 +88,7 @@ public class KeysIndex extends PerColumn
     @Override
     public void insertColumn(DecoratedKey<?> valueKey, ByteBuffer rowKey, 
IColumn column)
     {
-        ColumnFamily cfi = ColumnFamily.create(indexedCfs.metadata);
+        ColumnFamily cfi = ColumnFamily.create(indexCfs.metadata);
         if (column instanceof ExpiringColumn)
         {
             ExpiringColumn ec = (ExpiringColumn)column;
@@ -103,7 +101,7 @@ public class KeysIndex extends PerColumn
         if (logger.isDebugEnabled())
             logger.debug("applying index row {}:{}", valueKey, cfi);
         
-        indexedCfs.apply(valueKey, cfi);
+        indexCfs.apply(valueKey, cfi);
     }
     
     @Override
@@ -115,8 +113,8 @@ public class KeysIndex extends PerColumn
     @Override
     public void removeIndex(ByteBuffer columnName) throws IOException
     {        
-        indexedCfs.removeAllSSTables();
-        indexedCfs.unregisterMBean();     
+        indexCfs.removeAllSSTables();
+        indexCfs.unregisterMBean();
     }
 
     @Override
@@ -124,7 +122,7 @@ public class KeysIndex extends PerColumn
     {       
         try
         {
-            indexedCfs.forceBlockingFlush();
+            indexCfs.forceBlockingFlush();
         } 
         catch (ExecutionException e)
         {
@@ -139,13 +137,13 @@ public class KeysIndex extends PerColumn
     @Override
     public void unregisterMbean()
     {
-        indexedCfs.unregisterMBean();        
+        indexCfs.unregisterMBean();
     }
 
     @Override
     public ColumnFamilyStore getUnderlyingCfs()
     {
-       return indexedCfs;
+       return indexCfs;
     }
 
     @Override
@@ -157,13 +155,13 @@ public class KeysIndex extends PerColumn
     @Override
     public String getIndexName()
     {
-        return indexedCfs.columnFamily;
+        return indexCfs.columnFamily;
     }
 
     @Override
     public void renameIndex(String newCfName) throws IOException
     {
-        
indexedCfs.renameSSTables(indexedCfs.columnFamily.replace(baseCfs.columnFamily, 
newCfName));       
+        
indexCfs.renameSSTables(indexCfs.columnFamily.replace(baseCfs.columnFamily, 
newCfName));
     }
 
     @Override

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/net/MessagingService.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/net/MessagingService.java?rev=1187054&r1=1187053&r2=1187054&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/net/MessagingService.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/net/MessagingService.java Thu 
Oct 20 21:20:51 2011
@@ -603,7 +603,8 @@ public final class MessagingService impl
             if (recent > 0)
             {
                 logTpstats = true;
-                logger_.info("{} {} messages dropped in server lifetime", 
recent, verb);
+                logger_.info("{} {} messages dropped in last {}ms",
+                             new Object[] {recent, verb, 
LOG_DROPPED_INTERVAL_IN_MS});
                 lastDroppedInternal.put(verb, dropped.get());
             }
         }

Modified: cassandra/trunk/src/java/org/apache/cassandra/utils/UUIDGen.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/utils/UUIDGen.java?rev=1187054&r1=1187053&r2=1187054&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/utils/UUIDGen.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/utils/UUIDGen.java Thu Oct 20 
21:20:51 2011
@@ -22,7 +22,6 @@ package org.apache.cassandra.utils;
 
 import java.io.*;
 import java.net.InetAddress;
-import java.net.UnknownHostException;
 import java.nio.ByteBuffer;
 import java.util.HashMap;
 import java.util.Map;
@@ -123,7 +122,7 @@ public class UUIDGen
     
     private static byte[] createTimeUUIDBytes(long msb)
     {
-        long lsb = instance.getClockSeqAndNode();
+        long lsb = instance.getClockSeqAndNode(FBUtilities.getLocalAddress());
         byte[] uuidBytes = new byte[16];
         
         for (int i = 0; i < 8; i++)
@@ -148,19 +147,7 @@ public class UUIDGen
             throw new IllegalArgumentException("incompatible with uuid 
version: "+uuid.version());
         return (uuid.timestamp() / 10000) - START_EPOCH;
     }
-    
-    private long getClockSeqAndNode()
-    {
-        try
-        {
-            return getClockSeqAndNode(InetAddress.getLocalHost());
-        }
-        catch (UnknownHostException e)
-        {
-            throw new RuntimeException(e);
-        }
-    }
-    
+
     // todo: could cache value if we assume node doesn't change.
     private long getClockSeqAndNode(InetAddress addr)
     {


Reply via email to