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
