merge from 1.2

Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a751d04d
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a751d04d
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a751d04d

Branch: refs/heads/trunk
Commit: a751d04d7d0e5e96ea7cee79093e090836ca0f5e
Parents: 2fde93d c7eb146
Author: Jonathan Ellis <[email protected]>
Authored: Tue Apr 9 16:55:07 2013 -0500
Committer: Jonathan Ellis <[email protected]>
Committed: Tue Apr 9 16:55:07 2013 -0500

----------------------------------------------------------------------
 CHANGES.txt                                        |    2 +
 doc/native_protocol.spec                           |    2 +-
 .../apache/cassandra/db/AtomicSortedColumns.java   |    2 +-
 src/java/org/apache/cassandra/db/Table.java        |    2 +-
 .../db/compaction/LazilyCompactedRow.java          |    2 +-
 .../db/compaction/ParallelCompactionIterable.java  |    2 +-
 .../cassandra/db/compaction/PrecompactedRow.java   |    4 +-
 .../cassandra/db/index/SecondaryIndexManager.java  |  101 +++------------
 test/unit/org/apache/cassandra/SchemaLoader.java   |    2 +-
 .../db/index/PerRowSecondaryIndexTest.java         |   55 ++++++++
 10 files changed, 82 insertions(+), 92 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a751d04d/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 92e61a8,32aba15..75c9979
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,40 -1,7 +1,42 @@@
 +2.0
 + * Leveled compaction performs size-tiered compactions in L0 (CASSANDRA-5371)
 + * Add yaml network topology snitch for mixed ec2/other envs (CASSANDRA-5339)
 + * Log when a node is down longer than the hint window (CASSANDRA-4554)
 + * Optimize tombstone creation for ExpiringColumns (CASSANDRA-4917)
 + * Improve LeveledScanner work estimation (CASSANDRA-5250, 5407)
 + * Replace compaction lock with runWithCompactionsDisabled (CASSANDRA-3430)
 + * Change Message IDs to ints (CASSANDRA-5307)
 + * Move sstable level information into the Stats component, removing the
 +   need for a separate Manifest file (CASSANDRA-4872)
 + * avoid serializing to byte[] on commitlog append (CASSANDRA-5199)
 + * make index_interval configurable per columnfamily (CASSANDRA-3961)
 + * add default_time_to_live (CASSANDRA-3974)
 + * add memtable_flush_period_in_ms (CASSANDRA-4237)
 + * replace supercolumns internally by composites (CASSANDRA-3237, 5123)
 + * upgrade thrift to 0.9.0 (CASSANDRA-3719)
 + * drop unnecessary keyspace parameter from user-defined compaction API 
 +   (CASSANDRA-5139)
 + * more robust solution to incomplete compactions + counters (CASSANDRA-5151)
 + * Change order of directory searching for c*.in.sh (CASSANDRA-3983)
 + * Add tool to reset SSTable compaction level for LCS (CASSANDRA-5271)
 + * Allow custom configuration loader (CASSANDRA-5045)
 + * Remove memory emergency pressure valve logic (CASSANDRA-3534)
 + * Reduce request latency with eager retry (CASSANDRA-4705)
 + * cqlsh: Remove ASSUME command (CASSANDRA-5331)
 + * Rebuild BF when loading sstables if bloom_filter_fp_chance
 +   has changed since compaction (CASSANDRA-5015)
 + * remove row-level bloom filters (CASSANDRA-4885)
 + * Change Kernel Page Cache skipping into row preheating (disabled by default)
 +   (CASSANDRA-4937)
 + * Improve repair by deciding on a gcBefore before sending
 +   out TreeRequests (CASSANDRA-4932)
 + * Add an official way to disable compactions (CASSANDRA-5074)
 +
 +
  1.2.5
   * Include fatal errors in trace events (CASSANDRA-5447)
+  * Ensure that PerRowSecondaryIndex is notified of row-level deletes
+    (CASSANDRA-5445)
  
  
  1.2.4

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a751d04d/src/java/org/apache/cassandra/db/AtomicSortedColumns.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a751d04d/src/java/org/apache/cassandra/db/Table.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a751d04d/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a751d04d/src/java/org/apache/cassandra/db/compaction/ParallelCompactionIterable.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a751d04d/src/java/org/apache/cassandra/db/compaction/PrecompactedRow.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a751d04d/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
index b0b8392,3b27614..6859c81
--- a/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
+++ b/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
@@@ -46,13 -46,13 +46,13 @@@ public class SecondaryIndexManage
  
      public static final Updater nullUpdater = new Updater()
      {
 -        public void insert(IColumn column) { }
 +        public void insert(Column column) { }
  
 -        public void update(IColumn oldColumn, IColumn column) { }
 +        public void update(Column oldColumn, Column column) { }
  
 -        public void remove(IColumn current) { }
 +        public void remove(Column current) { }
  
-         public void commit() {}
+         public void updateRowLevelIndexes() {}
      };
  
      /**
@@@ -571,19 -580,19 +571,19 @@@
      public static interface Updater
      {
          /** called when constructing the index against pre-existing data */
 -        public void insert(IColumn column);
 +        public void insert(Column column);
  
          /** called when updating the index from a memtable */
 -        public void update(IColumn oldColumn, IColumn column);
 +        public void update(Column oldColumn, Column column);
  
          /** called when lazy-updating the index during compaction 
(CASSANDRA-2897) */
 -        public void remove(IColumn current);
 +        public void remove(Column current);
  
          /** called after memtable updates are complete (CASSANDRA-5397) */
-         public void commit();
+         public void updateRowLevelIndexes();
      }
  
-     private class PerColumnIndexUpdater implements Updater
+     private class StandardUpdater implements Updater
      {
          private final DecoratedKey key;
  
@@@ -597,77 -606,25 +597,20 @@@
              if (column.isMarkedForDelete())
                  return;
  
 -            SecondaryIndex index = indexFor(column.name());
 -            if (index == null)
 -                return;
 -
 -            if (index instanceof PerColumnSecondaryIndex)
 -                ((PerColumnSecondaryIndex) index).insert(key.key, column);
 +            for (SecondaryIndex index : indexFor(column.name()))
-                 ((PerColumnSecondaryIndex) index).insert(key.key, column);
-         }
- 
-         public void update(Column oldColumn, Column column)
-         {
-             for (SecondaryIndex index : indexFor(column.name()))
 +            {
-                 ((PerColumnSecondaryIndex) index).delete(key.key, oldColumn);
-                 if (!column.isMarkedForDelete())
++                if (index instanceof PerColumnSecondaryIndex)
 +                    ((PerColumnSecondaryIndex) index).insert(key.key, column);
 +            }
          }
  
-         public void remove(Column column)
-         {
-             if (column.isMarkedForDelete())
-                 return;
- 
-             for (SecondaryIndex index : indexFor(column.name()))
-                 ((PerColumnSecondaryIndex) index).delete(key.key, column);
-         }
- 
-         public void commit()
-         {
-             // this is a no-op as per-column index updates are applied 
immediately
-         }
-     }
- 
-     private class MixedIndexUpdater implements Updater
-     {
-         private final DecoratedKey key;
-         ConcurrentHashMap<SecondaryIndex, ByteBuffer> deferredUpdates = new 
ConcurrentHashMap<SecondaryIndex, ByteBuffer>();
- 
-         public MixedIndexUpdater(DecoratedKey key)
-         {
-             this.key = key;
-         }
- 
-         public void insert(Column column)
-         {
-             if (column.isMarkedForDelete())
-                 return;
- 
-             for (SecondaryIndex index : indexFor(column.name()))
-             {
-                 if (index instanceof  PerColumnSecondaryIndex)
-                 {
-                     ((PerColumnSecondaryIndex) index).insert(key.key, column);
-                 }
-                 else
-                 {
-                     deferredUpdates.putIfAbsent(index, key.key);
-                 }
-             }
-         }
- 
 -        public void update(IColumn oldColumn, IColumn column)
 +        public void update(Column oldColumn, Column column)
          {
 -            SecondaryIndex index = indexFor(column.name());
 -            if (index == null)
 -                return;
 -
 -            if (index instanceof PerColumnSecondaryIndex)
 +            for (SecondaryIndex index : indexFor(column.name()))
              {
-                 if (index instanceof  PerColumnSecondaryIndex)
-                 {
-                     ((PerColumnSecondaryIndex) index).delete(key.key, 
oldColumn);
-                     if (!column.isMarkedForDelete())
-                         ((PerColumnSecondaryIndex) index).insert(key.key, 
column);
-                 }
-                 else
-                 {
-                     deferredUpdates.putIfAbsent(index, key.key);
-                 }
+                 ((PerColumnSecondaryIndex) index).delete(key.key, oldColumn);
+                 if (!column.isMarkedForDelete())
+                     ((PerColumnSecondaryIndex) index).insert(key.key, column);
              }
          }
  
@@@ -676,27 -633,18 +619,17 @@@
              if (column.isMarkedForDelete())
                  return;
  
 -            SecondaryIndex index = indexFor(column.name());
 -            if (index == null)
 -                return;
 -
 -            if (index instanceof PerColumnSecondaryIndex)
 -                ((PerColumnSecondaryIndex) index).delete(key.key, column);
 +            for (SecondaryIndex index : indexFor(column.name()))
 +            {
-                 if (index instanceof  PerColumnSecondaryIndex)
-                 {
-                     ((PerColumnSecondaryIndex) index).delete(key.key, column);
-                 }
-                 else
-                 {
-                     // per-row secondary indexes are assumed to keep the 
index up-to-date at insert time, rather
-                     // than performing lazy updates
-                 }
++                if (index instanceof PerColumnSecondaryIndex)
++                   ((PerColumnSecondaryIndex) index).delete(key.key, column);
 +            }
          }
  
-         public void commit()
+         public void updateRowLevelIndexes()
          {
-             for (Map.Entry<SecondaryIndex, ByteBuffer> update : 
deferredUpdates.entrySet())
-             {
-                 assert update.getKey() instanceof PerRowSecondaryIndex;
-                 ((PerRowSecondaryIndex) 
update.getKey()).index(update.getValue());
-             }
+             for (SecondaryIndex index : rowLevelIndexMap.values())
+                 ((PerRowSecondaryIndex) index).index(key.key);
          }
      }
  }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a751d04d/test/unit/org/apache/cassandra/SchemaLoader.java
----------------------------------------------------------------------
diff --cc test/unit/org/apache/cassandra/SchemaLoader.java
index 0035b1e,3db1fc5..0e856a0
--- a/test/unit/org/apache/cassandra/SchemaLoader.java
+++ b/test/unit/org/apache/cassandra/SchemaLoader.java
@@@ -310,8 -322,8 +310,8 @@@ public class SchemaLoade
                                  IndexType.CUSTOM,
                                  indexOptions,
                                  ByteBufferUtil.bytesToHex(cName),
 -                                null));
 +                                null, ColumnDefinition.Type.REGULAR));
-                     }});
+                 }});
      }
  
      private static void useCompression(List<KSMetaData> schema)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a751d04d/test/unit/org/apache/cassandra/db/index/PerRowSecondaryIndexTest.java
----------------------------------------------------------------------
diff --cc test/unit/org/apache/cassandra/db/index/PerRowSecondaryIndexTest.java
index 4708bec,3080912..a4f97fe
--- a/test/unit/org/apache/cassandra/db/index/PerRowSecondaryIndexTest.java
+++ b/test/unit/org/apache/cassandra/db/index/PerRowSecondaryIndexTest.java
@@@ -79,8 -134,9 +133,9 @@@ public class PerRowSecondaryIndexTest e
          public void index(ByteBuffer rowKey)
          {
              QueryFilter filter = 
QueryFilter.getIdentityFilter(DatabaseDescriptor.getPartitioner().decorateKey(rowKey),
 -                                                               new 
QueryPath(baseCfs.getColumnFamilyName()));
 +                                                               
baseCfs.getColumnFamilyName());
              LAST_INDEXED_ROW = baseCfs.getColumnFamily(filter);
+             LAST_INDEXED_KEY = rowKey;
          }
  
          @Override

Reply via email to