cassandra git commit: Expand use of vints
Repository: cassandra Updated Branches: refs/heads/trunk 639d4b240 -> a59be2693 Expand use of vints patch by Sylvain Lebresne; reviewed by Aleksey Yeschenko for CASSANDRA-9801 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a59be269 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a59be269 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a59be269 Branch: refs/heads/trunk Commit: a59be2693e33e899264bc29b37b669d4bb645a74 Parents: 639d4b2 Author: Sylvain Lebresne Authored: Tue Jul 14 14:23:28 2015 +0200 Committer: Aleksey Yeschenko Committed: Tue Jul 28 17:17:52 2015 +0300 -- CHANGES.txt | 4 +- src/java/org/apache/cassandra/db/Columns.java | 16 src/java/org/apache/cassandra/db/Mutation.java | 28 +++--- .../org/apache/cassandra/db/ReadResponse.java | 15 +++- .../cassandra/db/SerializationHeader.java | 24 ++-- src/java/org/apache/cassandra/db/Slices.java| 6 +-- .../db/filter/ClusteringIndexNamesFilter.java | 6 +-- .../cassandra/db/filter/ColumnFilter.java | 6 +-- .../apache/cassandra/db/filter/DataLimits.java | 40 ++-- .../apache/cassandra/db/filter/RowFilter.java | 12 +++--- .../rows/UnfilteredRowIteratorSerializer.java | 6 +-- .../cassandra/db/rows/UnfilteredSerializer.java | 16 12 files changed, 97 insertions(+), 82 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/a59be269/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 2db4115..4608492 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -5,8 +5,8 @@ * Metrics should use up to date nomenclature (CASSANDRA-9448) * Change CREATE/ALTER TABLE syntax for compression (CASSANDRA-8384) * Cleanup crc and adler code for java 8 (CASSANDRA-9650) - * Storage engine refactor (CASSANDRA-8099, 9743, 9746, 9759, 9781, 9808, 9825, 9848, - 9705, 9859, 9867, 9874, 9828, 9801) + * Storage engine refactor (CASSANDRA-8099, 9743, 9746, 9759, 9781, 9808, 9825, + 9848, 9705, 9859, 9867, 9874, 9828, 9801) * Update Guava to 18.0 (CASSANDRA-9653) * Bloom filter false positive ratio is not honoured (CASSANDRA-8413) * New option for cassandra-stress to leave a ratio of columns null (CASSANDRA-9522) http://git-wip-us.apache.org/repos/asf/cassandra/blob/a59be269/src/java/org/apache/cassandra/db/Columns.java -- diff --git a/src/java/org/apache/cassandra/db/Columns.java b/src/java/org/apache/cassandra/db/Columns.java index 48a4504..03d2e14 100644 --- a/src/java/org/apache/cassandra/db/Columns.java +++ b/src/java/org/apache/cassandra/db/Columns.java @@ -17,7 +17,6 @@ */ package org.apache.cassandra.db; -import java.io.DataInput; import java.io.IOException; import java.util.*; import java.util.function.Predicate; @@ -31,6 +30,7 @@ import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.config.ColumnDefinition; import org.apache.cassandra.db.marshal.UTF8Type; import org.apache.cassandra.db.marshal.MapType; +import org.apache.cassandra.io.util.DataInputPlus; import org.apache.cassandra.io.util.DataOutputPlus; import org.apache.cassandra.utils.ByteBufferUtil; @@ -526,26 +526,26 @@ public class Columns implements Iterable { public void serialize(Columns columns, DataOutputPlus out) throws IOException { -out.writeShort(columns.columnCount()); +out.writeVInt(columns.columnCount()); for (ColumnDefinition column : columns) -ByteBufferUtil.writeWithShortLength(column.name.bytes, out); +ByteBufferUtil.writeWithVIntLength(column.name.bytes, out); } public long serializedSize(Columns columns) { -long size = TypeSizes.sizeof((short)columns.columnCount()); +long size = TypeSizes.sizeofVInt(columns.columnCount()); for (ColumnDefinition column : columns) -size += TypeSizes.sizeofWithShortLength(column.name.bytes); +size += ByteBufferUtil.serializedSizeWithVIntLength(column.name.bytes); return size; } -public Columns deserialize(DataInput in, CFMetaData metadata) throws IOException +public Columns deserialize(DataInputPlus in, CFMetaData metadata) throws IOException { -int length = in.readUnsignedShort(); +int length = (int)in.readVInt(); ColumnDefinition[] columns = new ColumnDefinition[length]; for (int i = 0; i < length; i++) { -ByteBuffer name = ByteBufferUtil.readWithShortLen
cassandra git commit: Get entropy from /dev/urandom for unit tests
Repository: cassandra Updated Branches: refs/heads/cassandra-2.2 fcb5bd67d -> ae179e453 Get entropy from /dev/urandom for unit tests patch by Ariel Weisberg; reviewed by Aleksey Yeschenko for CASSANDRA-9581 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/ae179e45 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/ae179e45 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/ae179e45 Branch: refs/heads/cassandra-2.2 Commit: ae179e45327a133248c06019f87615c9cf69f643 Parents: fcb5bd6 Author: Ariel Weisberg Authored: Thu Jun 11 11:49:59 2015 -0400 Committer: Aleksey Yeschenko Committed: Tue Jul 28 18:03:46 2015 +0300 -- build.xml | 2 ++ 1 file changed, 2 insertions(+) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/ae179e45/build.xml -- diff --git a/build.xml b/build.xml index 9de6ab1..8d5c827 100644 --- a/build.xml +++ b/build.xml @@ -1198,6 +1198,8 @@ + +
[1/2] cassandra git commit: Get entropy from /dev/urandom for unit tests
Repository: cassandra Updated Branches: refs/heads/trunk 3879bfd1e -> fb10df212 Get entropy from /dev/urandom for unit tests patch by Ariel Weisberg; reviewed by Aleksey Yeschenko for CASSANDRA-9581 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/ae179e45 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/ae179e45 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/ae179e45 Branch: refs/heads/trunk Commit: ae179e45327a133248c06019f87615c9cf69f643 Parents: fcb5bd6 Author: Ariel Weisberg Authored: Thu Jun 11 11:49:59 2015 -0400 Committer: Aleksey Yeschenko Committed: Tue Jul 28 18:03:46 2015 +0300 -- build.xml | 2 ++ 1 file changed, 2 insertions(+) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/ae179e45/build.xml -- diff --git a/build.xml b/build.xml index 9de6ab1..8d5c827 100644 --- a/build.xml +++ b/build.xml @@ -1198,6 +1198,8 @@ + +
[2/2] cassandra git commit: Merge branch 'cassandra-2.2' into trunk
Merge branch 'cassandra-2.2' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/fb10df21 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/fb10df21 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/fb10df21 Branch: refs/heads/trunk Commit: fb10df212eebf5870ba93a3b9624049b8bdfbf44 Parents: 3879bfd ae179e4 Author: Aleksey Yeschenko Authored: Tue Jul 28 18:10:58 2015 +0300 Committer: Aleksey Yeschenko Committed: Tue Jul 28 18:10:58 2015 +0300 -- build.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/fb10df21/build.xml -- diff --cc build.xml index e6581ea,8d5c827..5cd8f20 --- a/build.xml +++ b/build.xml @@@ -1214,10 -1195,11 +1214,10 @@@ - + - - - + +
cassandra git commit: Fix little endian handling by NIODataInputStream.readVInt()
Repository: cassandra Updated Branches: refs/heads/trunk d26187e5c -> 85c6b2edb Fix little endian handling by NIODataInputStream.readVInt() patch by Ariel Weisberg; reviewed by Aleksey Yeschenko for CASSANDRA-9865 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/85c6b2ed Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/85c6b2ed Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/85c6b2ed Branch: refs/heads/trunk Commit: 85c6b2edb82bdc797a47c29a1d4af0ad2739e0f5 Parents: d26187e Author: Ariel Weisberg Authored: Tue Jul 28 14:15:23 2015 -0400 Committer: Aleksey Yeschenko Committed: Wed Jul 29 20:03:11 2015 +0300 -- CHANGES.txt | 4 ++-- src/java/org/apache/cassandra/io/util/NIODataInputStream.java | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/85c6b2ed/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 562fce5..6931701 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -19,8 +19,8 @@ * Change gossip stabilization to use endpoit size (CASSANDRA-9401) * Change default garbage collector to G1 (CASSANDRA-7486) * Populate TokenMetadata early during startup (CASSANDRA-9317) - * undeprecate cache recentHitRate (CASSANDRA-6591) - * Add support for selectively varint encoding fields (CASSANDRA-9499) + * Undeprecate cache recentHitRate (CASSANDRA-6591) + * Add support for selectively varint encoding fields (CASSANDRA-9499, 9865) 2.2.1 http://git-wip-us.apache.org/repos/asf/cassandra/blob/85c6b2ed/src/java/org/apache/cassandra/io/util/NIODataInputStream.java -- diff --git a/src/java/org/apache/cassandra/io/util/NIODataInputStream.java b/src/java/org/apache/cassandra/io/util/NIODataInputStream.java index fbe24be..f6c939a 100644 --- a/src/java/org/apache/cassandra/io/util/NIODataInputStream.java +++ b/src/java/org/apache/cassandra/io/util/NIODataInputStream.java @@ -23,6 +23,7 @@ import java.io.EOFException; import java.io.IOException; import java.io.InputStream; import java.nio.ByteBuffer; +import java.nio.ByteOrder; import java.nio.channels.ReadableByteChannel; import java.nio.channels.SeekableByteChannel; @@ -321,6 +322,8 @@ public class NIODataInputStream extends InputStream implements DataInputPlus, Cl int extraBits = extraBytes * 8; long retval = buf.getLong(position); +if (buf.order() == ByteOrder.LITTLE_ENDIAN) +retval = Long.reverseBytes(retval); buf.position(position + extraBytes); // truncate the bytes we read in excess of those we needed
cassandra git commit: Fix AntiCompactionTest.antiCompactionSizeTest
Repository: cassandra Updated Branches: refs/heads/trunk 85c6b2edb -> eca7cbb2e Fix AntiCompactionTest.antiCompactionSizeTest relax AntiCompactionTest.antiCompactionSizeTest so the sizes don't have to be as close, but also verify that the row count doesn't change. patch by Ariel Weisberg; reviewed by Aleksey Yeschenko Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/eca7cbb2 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/eca7cbb2 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/eca7cbb2 Branch: refs/heads/trunk Commit: eca7cbb2e20858625c39cf0f9a5a76c6cc905dc0 Parents: 85c6b2e Author: Ariel Weisberg Authored: Tue Jul 28 14:45:21 2015 -0400 Committer: Aleksey Yeschenko Committed: Wed Jul 29 20:07:57 2015 +0300 -- .../apache/cassandra/db/compaction/AntiCompactionTest.java | 9 +++-- 1 file changed, 7 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/eca7cbb2/test/unit/org/apache/cassandra/db/compaction/AntiCompactionTest.java -- diff --git a/test/unit/org/apache/cassandra/db/compaction/AntiCompactionTest.java b/test/unit/org/apache/cassandra/db/compaction/AntiCompactionTest.java index b85c5ec..73baeeb 100644 --- a/test/unit/org/apache/cassandra/db/compaction/AntiCompactionTest.java +++ b/test/unit/org/apache/cassandra/db/compaction/AntiCompactionTest.java @@ -149,10 +149,15 @@ public class AntiCompactionTest CompactionManager.instance.performAnticompaction(cfs, Arrays.asList(range), refs, txn, 12345); } long sum = 0; +long rows = 0; for (SSTableReader x : cfs.getLiveSSTables()) +{ sum += x.bytesOnDisk(); +rows += x.getTotalRows(); +} assertEquals(sum, cfs.metric.liveDiskSpaceUsed.getCount()); -assertEquals(origSize, cfs.metric.liveDiskSpaceUsed.getCount(), 10); +assertEquals(rows, 1000 * (1000 * 5));//See writeFile for how this number is derived +assertEquals(origSize, cfs.metric.liveDiskSpaceUsed.getCount(), 1600); } private SSTableReader writeFile(ColumnFamilyStore cfs, int count) @@ -293,7 +298,7 @@ public class AntiCompactionTest } Collection sstables = getUnrepairedSSTables(store); assertEquals(store.getLiveSSTables().size(), sstables.size()); - + Range range = new Range(new BytesToken("-10".getBytes()), new BytesToken("-1".getBytes())); List> ranges = Arrays.asList(range);
cassandra git commit: Revert "Revert "Expand use of vints""
Repository: cassandra Updated Branches: refs/heads/trunk eca7cbb2e -> 2fea59d5e Revert "Revert "Expand use of vints"" This reverts commit 59a28615c4f7e746b4dce09f907e875bcd761f65. Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2fea59d5 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2fea59d5 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2fea59d5 Branch: refs/heads/trunk Commit: 2fea59d5e37abba93280dd9231d6dd9fcd9fff96 Parents: eca7cbb Author: Aleksey Yeschenko Authored: Wed Jul 29 20:09:56 2015 +0300 Committer: Aleksey Yeschenko Committed: Wed Jul 29 20:09:56 2015 +0300 -- CHANGES.txt | 4 +- src/java/org/apache/cassandra/db/Columns.java | 16 src/java/org/apache/cassandra/db/Mutation.java | 28 +++--- .../org/apache/cassandra/db/ReadResponse.java | 15 +++- .../cassandra/db/SerializationHeader.java | 24 ++-- src/java/org/apache/cassandra/db/Slices.java| 6 +-- .../db/filter/ClusteringIndexNamesFilter.java | 6 +-- .../cassandra/db/filter/ColumnFilter.java | 6 +-- .../apache/cassandra/db/filter/DataLimits.java | 40 ++-- .../apache/cassandra/db/filter/RowFilter.java | 12 +++--- .../rows/UnfilteredRowIteratorSerializer.java | 6 +-- .../cassandra/db/rows/UnfilteredSerializer.java | 16 12 files changed, 97 insertions(+), 82 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/2fea59d5/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 6931701..07bd212 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -5,8 +5,8 @@ * Metrics should use up to date nomenclature (CASSANDRA-9448) * Change CREATE/ALTER TABLE syntax for compression (CASSANDRA-8384) * Cleanup crc and adler code for java 8 (CASSANDRA-9650) - * Storage engine refactor (CASSANDRA-8099, 9743, 9746, 9759, 9781, 9808, 9825, 9848, - 9705, 9859, 9867, 9874, 9828, 9801) + * Storage engine refactor (CASSANDRA-8099, 9743, 9746, 9759, 9781, 9808, 9825, + 9848, 9705, 9859, 9867, 9874, 9828, 9801) * Update Guava to 18.0 (CASSANDRA-9653) * Bloom filter false positive ratio is not honoured (CASSANDRA-8413) * New option for cassandra-stress to leave a ratio of columns null (CASSANDRA-9522) http://git-wip-us.apache.org/repos/asf/cassandra/blob/2fea59d5/src/java/org/apache/cassandra/db/Columns.java -- diff --git a/src/java/org/apache/cassandra/db/Columns.java b/src/java/org/apache/cassandra/db/Columns.java index 48a4504..03d2e14 100644 --- a/src/java/org/apache/cassandra/db/Columns.java +++ b/src/java/org/apache/cassandra/db/Columns.java @@ -17,7 +17,6 @@ */ package org.apache.cassandra.db; -import java.io.DataInput; import java.io.IOException; import java.util.*; import java.util.function.Predicate; @@ -31,6 +30,7 @@ import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.config.ColumnDefinition; import org.apache.cassandra.db.marshal.UTF8Type; import org.apache.cassandra.db.marshal.MapType; +import org.apache.cassandra.io.util.DataInputPlus; import org.apache.cassandra.io.util.DataOutputPlus; import org.apache.cassandra.utils.ByteBufferUtil; @@ -526,26 +526,26 @@ public class Columns implements Iterable { public void serialize(Columns columns, DataOutputPlus out) throws IOException { -out.writeShort(columns.columnCount()); +out.writeVInt(columns.columnCount()); for (ColumnDefinition column : columns) -ByteBufferUtil.writeWithShortLength(column.name.bytes, out); +ByteBufferUtil.writeWithVIntLength(column.name.bytes, out); } public long serializedSize(Columns columns) { -long size = TypeSizes.sizeof((short)columns.columnCount()); +long size = TypeSizes.sizeofVInt(columns.columnCount()); for (ColumnDefinition column : columns) -size += TypeSizes.sizeofWithShortLength(column.name.bytes); +size += ByteBufferUtil.serializedSizeWithVIntLength(column.name.bytes); return size; } -public Columns deserialize(DataInput in, CFMetaData metadata) throws IOException +public Columns deserialize(DataInputPlus in, CFMetaData metadata) throws IOException { -int length = in.readUnsignedShort(); +int length = (int)in.readVInt(); ColumnDefinition[] columns = new ColumnDefinition[length]; for (int i = 0; i < length; i++) { -ByteBuffer name = ByteBufferU
[1/2] cassandra git commit: Fix CommitLogUpgradeTest
Repository: cassandra Updated Branches: refs/heads/trunk 2fea59d5e -> 5f4cc45cd Fix CommitLogUpgradeTest filter hashed/counted rows to only the ones containing the required data. patch by Branimir Lambov; reviewed by Aleksey Yeschenko for CASSANDRA-9790 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/fb34b795 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/fb34b795 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/fb34b795 Branch: refs/heads/trunk Commit: fb34b7950483abc5a15c09e802852183699c0ecb Parents: 2fea59d Author: Branimir Lambov Authored: Wed Jul 29 18:56:14 2015 +0300 Committer: Aleksey Yeschenko Committed: Wed Jul 29 20:23:41 2015 +0300 -- .../db/commitlog/CommitLogUpgradeTest.java| 18 +- .../db/commitlog/CommitLogUpgradeTestMaker.java | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/fb34b795/test/unit/org/apache/cassandra/db/commitlog/CommitLogUpgradeTest.java -- diff --git a/test/unit/org/apache/cassandra/db/commitlog/CommitLogUpgradeTest.java b/test/unit/org/apache/cassandra/db/commitlog/CommitLogUpgradeTest.java index ce4e605..d8784d9 100644 --- a/test/unit/org/apache/cassandra/db/commitlog/CommitLogUpgradeTest.java +++ b/test/unit/org/apache/cassandra/db/commitlog/CommitLogUpgradeTest.java @@ -23,8 +23,6 @@ package org.apache.cassandra.db.commitlog; import java.io.*; import java.nio.ByteBuffer; -import java.nio.charset.StandardCharsets; -import java.util.Iterator; import java.util.Properties; import java.util.UUID; @@ -42,7 +40,6 @@ import org.apache.cassandra.db.Mutation; import org.apache.cassandra.db.rows.Cell; import org.apache.cassandra.db.rows.Row; import org.apache.cassandra.db.marshal.AsciiType; -import org.apache.cassandra.db.marshal.UTF8Type; import org.apache.cassandra.db.marshal.BytesType; import org.apache.cassandra.db.partitions.PartitionUpdate; import org.apache.cassandra.schema.KeyspaceParams; @@ -57,6 +54,7 @@ public class CommitLogUpgradeTest static final String TABLE = "Standard1"; static final String KEYSPACE = "Keyspace1"; +static final String CELLNAME = "name"; @Test public void test20() throws Exception @@ -75,7 +73,7 @@ public class CommitLogUpgradeTest { CFMetaData metadata = CFMetaData.Builder.createDense(KEYSPACE, TABLE, false, false) .addPartitionKey("key", AsciiType.instance) -.addClusteringColumn("col", BytesType.instance) +.addClusteringColumn("col", AsciiType.instance) .addRegularColumn("val", BytesType.instance) .build() .compressionParameters(SchemaLoader.getCompressionParameters()); @@ -142,13 +140,15 @@ public class CommitLogUpgradeTest for (PartitionUpdate update : mutation.getPartitionUpdates()) { for (Row row : update) -{ -for (Cell cell : row.cells()) +if (row.clustering().size() > 0 && + AsciiType.instance.compose(row.clustering().get(0)).startsWith(CELLNAME)) { -hash = hash(hash, cell.value()); -++cells; +for (Cell cell : row.cells()) +{ +hash = hash(hash, cell.value()); +++cells; +} } -} } return true; } http://git-wip-us.apache.org/repos/asf/cassandra/blob/fb34b795/test/unit/org/apache/cassandra/db/commitlog/CommitLogUpgradeTestMaker.java -- diff --git a/test/unit/org/apache/cassandra/db/commitlog/CommitLogUpgradeTestMaker.java b/test/unit/org/apache/cassandra/db/commitlog/CommitLogUpgradeTestMaker.java index cbae7e3..dbdb7fc 100644 --- a/test/unit/org/apache/cassandra/db/commitlog/CommitLogUpgradeTestMaker.java +++ b/test/unit/org/apache/cassandra/db/commitlog/CommitLogUpgradeTestMaker.java @@ -239,7 +239,7 @@ public class CommitLogUpgradeTestMaker { int sz = randomSize ? tlr.nextInt(cellSize) : cellSize; ByteBuffer bytes = randomBytes(sz, tlr); -builder.newRow("name&qu
[2/2] cassandra git commit: Add upgrade tests for lz4 and snappy compressed 2.2 commit logs
Add upgrade tests for lz4 and snappy compressed 2.2 commit logs patch by Branimir Lambov; reviewed by Aleksey Yeschenko for CASSANDRA-9790 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5f4cc45c Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5f4cc45c Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5f4cc45c Branch: refs/heads/trunk Commit: 5f4cc45cdb9c4da3bd78c1714738dd39b4768ace Parents: fb34b79 Author: Branimir Lambov Authored: Wed Jul 29 19:33:45 2015 +0300 Committer: Aleksey Yeschenko Committed: Wed Jul 29 20:25:48 2015 +0300 -- .../2.2-lz4/CommitLog-5-1438186885380.log| Bin 0 -> 839051 bytes .../2.2-lz4/CommitLog-5-1438186885381.log| Bin 0 -> 100 bytes test/data/legacy-commitlog/2.2-lz4/hash.txt | 5 + .../2.2-snappy/CommitLog-5-1438186915514.log | Bin 0 -> 820332 bytes .../2.2-snappy/CommitLog-5-1438186915515.log | Bin 0 -> 99 bytes test/data/legacy-commitlog/2.2-snappy/hash.txt | 5 + .../2.2/CommitLog-5-1438186815314.log| Bin 0 -> 2097152 bytes .../2.2/CommitLog-5-1438186815315.log| Bin 0 -> 2097152 bytes test/data/legacy-commitlog/2.2/hash.txt | 5 + .../db/commitlog/CommitLogUpgradeTest.java | 18 ++ 10 files changed, 33 insertions(+) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/5f4cc45c/test/data/legacy-commitlog/2.2-lz4/CommitLog-5-1438186885380.log -- diff --git a/test/data/legacy-commitlog/2.2-lz4/CommitLog-5-1438186885380.log b/test/data/legacy-commitlog/2.2-lz4/CommitLog-5-1438186885380.log new file mode 100644 index 000..b98304a Binary files /dev/null and b/test/data/legacy-commitlog/2.2-lz4/CommitLog-5-1438186885380.log differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/5f4cc45c/test/data/legacy-commitlog/2.2-lz4/CommitLog-5-1438186885381.log -- diff --git a/test/data/legacy-commitlog/2.2-lz4/CommitLog-5-1438186885381.log b/test/data/legacy-commitlog/2.2-lz4/CommitLog-5-1438186885381.log new file mode 100644 index 000..adac94f Binary files /dev/null and b/test/data/legacy-commitlog/2.2-lz4/CommitLog-5-1438186885381.log differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/5f4cc45c/test/data/legacy-commitlog/2.2-lz4/hash.txt -- diff --git a/test/data/legacy-commitlog/2.2-lz4/hash.txt b/test/data/legacy-commitlog/2.2-lz4/hash.txt new file mode 100644 index 000..20aa6e5 --- /dev/null +++ b/test/data/legacy-commitlog/2.2-lz4/hash.txt @@ -0,0 +1,5 @@ +#CommitLog upgrade test, version 2.2.0-SNAPSHOT +#Wed Jul 29 19:21:31 EEST 2015 +cells=6052 +hash=1274136076 +cfid=dc32ce20-360d-11e5-826c-afadad37221d http://git-wip-us.apache.org/repos/asf/cassandra/blob/5f4cc45c/test/data/legacy-commitlog/2.2-snappy/CommitLog-5-1438186915514.log -- diff --git a/test/data/legacy-commitlog/2.2-snappy/CommitLog-5-1438186915514.log b/test/data/legacy-commitlog/2.2-snappy/CommitLog-5-1438186915514.log new file mode 100644 index 000..e69dfb7 Binary files /dev/null and b/test/data/legacy-commitlog/2.2-snappy/CommitLog-5-1438186915514.log differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/5f4cc45c/test/data/legacy-commitlog/2.2-snappy/CommitLog-5-1438186915515.log -- diff --git a/test/data/legacy-commitlog/2.2-snappy/CommitLog-5-1438186915515.log b/test/data/legacy-commitlog/2.2-snappy/CommitLog-5-1438186915515.log new file mode 100644 index 000..3e06675 Binary files /dev/null and b/test/data/legacy-commitlog/2.2-snappy/CommitLog-5-1438186915515.log differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/5f4cc45c/test/data/legacy-commitlog/2.2-snappy/hash.txt -- diff --git a/test/data/legacy-commitlog/2.2-snappy/hash.txt b/test/data/legacy-commitlog/2.2-snappy/hash.txt new file mode 100644 index 000..f3dd72e --- /dev/null +++ b/test/data/legacy-commitlog/2.2-snappy/hash.txt @@ -0,0 +1,5 @@ +#CommitLog upgrade test, version 2.2.0-SNAPSHOT +#Wed Jul 29 19:22:01 EEST 2015 +cells=6051 +hash=881633109 +cfid=ee2fe860-360d-11e5-951c-afadad37221d http://git-wip-us.apache.org/repos/asf/cassandra/blob/5f4cc45c/test/data/legacy-commitlog/2.2/CommitLog-5-1438186815314.log -- diff --git a/test/data/legacy-commitlog/2.2/CommitLog-5-1438186815314.log b/test/data/legacy-commitlog/2.2/CommitLog-5-1438186815314
cassandra git commit: Fix CHANGES.txt
Repository: cassandra Updated Branches: refs/heads/cassandra-2.2 33e3af59f -> 2da016921 Fix CHANGES.txt Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2da01692 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2da01692 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2da01692 Branch: refs/heads/cassandra-2.2 Commit: 2da016921d0a3a1bf9e7744bd0f5772b931ced07 Parents: 33e3af5 Author: Aleksey Yeschenko Authored: Thu Jul 30 00:11:28 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Jul 30 00:11:28 2015 +0300 -- CHANGES.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/2da01692/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 4b079d4..50ac561 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -10,8 +10,10 @@ Merged from 2.0: * Log when messages are dropped due to cross_node_timeout (CASSANDRA-9793) * Don't track hotness when opening from snapshot for validation (CASSANDRA-9382) + 2.2.0 - * Fix cqlsh copy methods and other windows specific issues (CASSANDRA-9795) + * Allow the selection of columns together with aggregates (CASSANDRA-9767) + * Fix cqlsh copy methods and other windows specific issues (CASSANDRA-9795) * Don't wrap byte arrays in SequentialWriter (CASSANDRA-9797) * sum() and avg() functions missing for smallint and tinyint types (CASSANDRA-9671) * Revert CASSANDRA-9542 (allow native functions in UDA) (CASSANDRA-9771)
[1/2] cassandra git commit: Fix CHANGES.txt
Repository: cassandra Updated Branches: refs/heads/trunk b93f05d7d -> 4635f2f95 Fix CHANGES.txt Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2da01692 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2da01692 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2da01692 Branch: refs/heads/trunk Commit: 2da016921d0a3a1bf9e7744bd0f5772b931ced07 Parents: 33e3af5 Author: Aleksey Yeschenko Authored: Thu Jul 30 00:11:28 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Jul 30 00:11:28 2015 +0300 -- CHANGES.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/2da01692/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 4b079d4..50ac561 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -10,8 +10,10 @@ Merged from 2.0: * Log when messages are dropped due to cross_node_timeout (CASSANDRA-9793) * Don't track hotness when opening from snapshot for validation (CASSANDRA-9382) + 2.2.0 - * Fix cqlsh copy methods and other windows specific issues (CASSANDRA-9795) + * Allow the selection of columns together with aggregates (CASSANDRA-9767) + * Fix cqlsh copy methods and other windows specific issues (CASSANDRA-9795) * Don't wrap byte arrays in SequentialWriter (CASSANDRA-9797) * sum() and avg() functions missing for smallint and tinyint types (CASSANDRA-9671) * Revert CASSANDRA-9542 (allow native functions in UDA) (CASSANDRA-9771)
[2/2] cassandra git commit: Merge branch 'cassandra-2.2' into trunk
Merge branch 'cassandra-2.2' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/4635f2f9 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/4635f2f9 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/4635f2f9 Branch: refs/heads/trunk Commit: 4635f2f95ff509bc07b65ad899a3fd9190cb9fc4 Parents: b93f05d 2da0169 Author: Aleksey Yeschenko Authored: Thu Jul 30 00:12:02 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Jul 30 00:12:02 2015 +0300 -- CHANGES.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/4635f2f9/CHANGES.txt --
cassandra git commit: Ninja fix table names
Repository: cassandra Updated Branches: refs/heads/trunk f9947ff6a -> d645bfd46 Ninja fix table names Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/d645bfd4 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/d645bfd4 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/d645bfd4 Branch: refs/heads/trunk Commit: d645bfd464fcae3e8aef59a08f5eb6c7846ac11c Parents: f9947ff Author: Aleksey Yeschenko Authored: Thu Jul 30 16:40:23 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Jul 30 16:40:23 2015 +0300 -- .../org/apache/cassandra/db/SystemKeyspace.java | 34 ++-- 1 file changed, 17 insertions(+), 17 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/d645bfd4/src/java/org/apache/cassandra/db/SystemKeyspace.java -- diff --git a/src/java/org/apache/cassandra/db/SystemKeyspace.java b/src/java/org/apache/cassandra/db/SystemKeyspace.java index 3d1f555..e31feaa 100644 --- a/src/java/org/apache/cassandra/db/SystemKeyspace.java +++ b/src/java/org/apache/cassandra/db/SystemKeyspace.java @@ -100,8 +100,8 @@ public final class SystemKeyspace public static final String SSTABLE_ACTIVITY = "sstable_activity"; public static final String SIZE_ESTIMATES = "size_estimates"; public static final String AVAILABLE_RANGES = "available_ranges"; -public static final String MATERIALIZEDVIEWS_BUILDS_IN_PROGRESS = "materializedviews_builds_in_progress"; -public static final String BUILT_MATERIALIZEDVIEWS = "built_materializedviews"; +public static final String MATERIALIZED_VIEWS_BUILDS_IN_PROGRESS = "materialized_views_builds_in_progress"; +public static final String BUILT_MATERIALIZED_VIEWS = "built_materialized_views"; @Deprecated public static final String LEGACY_KEYSPACES = "schema_keyspaces"; @Deprecated public static final String LEGACY_COLUMNFAMILIES = "schema_columnfamilies"; @@ -263,7 +263,7 @@ public final class SystemKeyspace + "PRIMARY KEY ((keyspace_name)))"); private static final CFMetaData MaterializedViewsBuildsInProgress = -compile(MATERIALIZEDVIEWS_BUILDS_IN_PROGRESS, +compile(MATERIALIZED_VIEWS_BUILDS_IN_PROGRESS, "materialized views builds current progress", "CREATE TABLE %s (" + "keyspace_name text," @@ -273,7 +273,7 @@ public final class SystemKeyspace + "PRIMARY KEY ((keyspace_name), view_name))"); private static final CFMetaData BuiltMaterializedViews = -compile(BUILT_MATERIALIZEDVIEWS, +compile(BUILT_MATERIALIZED_VIEWS, "built materialized views", "CREATE TABLE %s (" + "keyspace_name text," @@ -517,32 +517,32 @@ public final class SystemKeyspace public static boolean isViewBuilt(String keyspaceName, String viewName) { String req = "SELECT view_name FROM %s.\"%s\" WHERE keyspace_name=? AND view_name=?"; -UntypedResultSet result = executeInternal(String.format(req, NAME, BUILT_MATERIALIZEDVIEWS), keyspaceName, viewName); +UntypedResultSet result = executeInternal(String.format(req, NAME, BUILT_MATERIALIZED_VIEWS), keyspaceName, viewName); return !result.isEmpty(); } public static void setMaterializedViewBuilt(String keyspaceName, String viewName) { String req = "INSERT INTO %s.\"%s\" (keyspace_name, view_name) VALUES (?, ?)"; -executeInternal(String.format(req, NAME, BUILT_MATERIALIZEDVIEWS), keyspaceName, viewName); -forceBlockingFlush(BUILT_MATERIALIZEDVIEWS); +executeInternal(String.format(req, NAME, BUILT_MATERIALIZED_VIEWS), keyspaceName, viewName); +forceBlockingFlush(BUILT_MATERIALIZED_VIEWS); } public static void setMaterializedViewRemoved(String keyspaceName, String viewName) { String buildReq = "DELETE FROM %S.%s WHERE keyspace_name = ? AND view_name = ?"; -executeInternal(String.format(buildReq, NAME, MATERIALIZEDVIEWS_BUILDS_IN_PROGRESS), keyspaceName, viewName); -forceBlockingFlush(MATERIALIZEDVIEWS_BUILDS_IN_PROGRESS); +executeInternal(String.format(buildReq, NAME, MATERIALIZED_VIEWS_BUILDS_IN_PROGRESS), keyspaceName, viewName); +forceBlockingFlush(MATERIALIZED_VIEWS_BUILDS_IN_PROGRESS); String builtReq = "DELETE FROM %s.\"%s\" WHERE keyspace_name = ? AND view_name = ?"; -executeInterna
[3/4] cassandra git commit: Stop accessing the partitioner directly via StorageService
http://git-wip-us.apache.org/repos/asf/cassandra/blob/69f77cbd/src/java/org/apache/cassandra/db/index/SecondaryIndex.java -- diff --git a/src/java/org/apache/cassandra/db/index/SecondaryIndex.java b/src/java/org/apache/cassandra/db/index/SecondaryIndex.java index 94031ab..9221090 100644 --- a/src/java/org/apache/cassandra/db/index/SecondaryIndex.java +++ b/src/java/org/apache/cassandra/db/index/SecondaryIndex.java @@ -42,15 +42,12 @@ import org.apache.cassandra.db.index.keys.KeysIndex; import org.apache.cassandra.db.lifecycle.SSTableSet; import org.apache.cassandra.db.lifecycle.View; import org.apache.cassandra.db.marshal.AbstractType; -import org.apache.cassandra.db.marshal.BytesType; -import org.apache.cassandra.db.marshal.LocalByPartionerType; +import org.apache.cassandra.dht.LocalPartitioner; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.io.sstable.format.SSTableReader; import org.apache.cassandra.exceptions.InvalidRequestException; import org.apache.cassandra.io.sstable.ReducingKeyIterator; -import org.apache.cassandra.service.StorageService; import org.apache.cassandra.utils.FBUtilities; - import org.apache.cassandra.utils.concurrent.Refs; /** @@ -79,10 +76,6 @@ public abstract class SecondaryIndex */ public static final String INDEX_ENTRIES_OPTION_NAME = "index_keys_and_values"; -public static final AbstractType keyComparator = StorageService.getPartitioner().preservesOrder() - ? BytesType.instance - : new LocalByPartionerType(StorageService.getPartitioner()); - /** * Base CF that has many indexes */ @@ -303,7 +296,7 @@ public abstract class SecondaryIndex */ public DecoratedKey getIndexKeyFor(ByteBuffer value) { -return getIndexCfs().partitioner.decorateKey(value); +return getIndexCfs().decorateKey(value); } /** @@ -381,11 +374,20 @@ public abstract class SecondaryIndex */ public static CFMetaData newIndexMetadata(CFMetaData baseMetadata, ColumnDefinition def) { +return newIndexMetadata(baseMetadata, def, def.type); +} + +/** + * Create the index metadata for the index on a given column of a given table. + */ +static CFMetaData newIndexMetadata(CFMetaData baseMetadata, ColumnDefinition def, AbstractType comparator) +{ if (def.getIndexType() == IndexType.CUSTOM) return null; CFMetaData.Builder builder = CFMetaData.Builder.create(baseMetadata.ksName, baseMetadata.indexColumnFamilyName(def)) .withId(baseMetadata.cfId) + .withPartitioner(new LocalPartitioner(comparator)) .addPartitionKey(def.name, def.type); if (def.getIndexType() == IndexType.COMPOSITES) http://git-wip-us.apache.org/repos/asf/cassandra/blob/69f77cbd/src/java/org/apache/cassandra/db/index/composites/CompositesIndex.java -- diff --git a/src/java/org/apache/cassandra/db/index/composites/CompositesIndex.java b/src/java/org/apache/cassandra/db/index/composites/CompositesIndex.java index 42861c5..29f235c 100644 --- a/src/java/org/apache/cassandra/db/index/composites/CompositesIndex.java +++ b/src/java/org/apache/cassandra/db/index/composites/CompositesIndex.java @@ -101,7 +101,7 @@ public abstract class CompositesIndex extends AbstractSimplePerColumnSecondaryIn protected static void addGenericClusteringColumns(CFMetaData.Builder indexMetadata, CFMetaData baseMetadata, ColumnDefinition columnDef) { -indexMetadata.addClusteringColumn("partition_key", SecondaryIndex.keyComparator); +indexMetadata.addClusteringColumn("partition_key", baseMetadata.partitioner.partitionOrdering()); for (ColumnDefinition def : baseMetadata.clusteringColumns()) indexMetadata.addClusteringColumn(def.name, def.type); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/69f77cbd/src/java/org/apache/cassandra/db/index/composites/CompositesIndexOnClusteringKey.java -- diff --git a/src/java/org/apache/cassandra/db/index/composites/CompositesIndexOnClusteringKey.java b/src/java/org/apache/cassandra/db/index/composites/CompositesIndexOnClusteringKey.java index 6529ad9..cd4aff9 100644 --- a/src/java/org/apache/cassandra/db/index/composites/CompositesIndexOnClusteringKey.java +++ b/src/java/org/apache/cassandra/db/index/composites/CompositesIndexOnClusteringKey.java @@ -24,7 +24,6 @@ import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.config.ColumnDefinition; import org.apache.ca
[2/4] cassandra git commit: Stop accessing the partitioner directly via StorageService
http://git-wip-us.apache.org/repos/asf/cassandra/blob/69f77cbd/src/java/org/apache/cassandra/io/sstable/format/big/BigTableScanner.java -- diff --git a/src/java/org/apache/cassandra/io/sstable/format/big/BigTableScanner.java b/src/java/org/apache/cassandra/io/sstable/format/big/BigTableScanner.java index 0451a98..1b3b407 100644 --- a/src/java/org/apache/cassandra/io/sstable/format/big/BigTableScanner.java +++ b/src/java/org/apache/cassandra/io/sstable/format/big/BigTableScanner.java @@ -172,7 +172,7 @@ public class BigTableScanner implements ISSTableScanner while (!ifile.isEOF()) { indexPosition = ifile.getFilePointer(); -DecoratedKey indexDecoratedKey = sstable.partitioner.decorateKey(ByteBufferUtil.readWithShortLength(ifile)); +DecoratedKey indexDecoratedKey = sstable.decorateKey(ByteBufferUtil.readWithShortLength(ifile)); if (indexDecoratedKey.compareTo(currentRange.left) > 0 || currentRange.contains(indexDecoratedKey)) { // Found, just read the dataPosition and seek into index and data files @@ -282,7 +282,7 @@ public class BigTableScanner implements ISSTableScanner if (ifile.isEOF()) return endOfData(); -currentKey = sstable.partitioner.decorateKey(ByteBufferUtil.readWithShortLength(ifile)); +currentKey = sstable.decorateKey(ByteBufferUtil.readWithShortLength(ifile)); currentEntry = rowIndexEntrySerializer.deserialize(ifile); } while (!currentRange.contains(currentKey)); } @@ -301,7 +301,7 @@ public class BigTableScanner implements ISSTableScanner else { // we need the position of the start of the next key, regardless of whether it falls in the current range -nextKey = sstable.partitioner.decorateKey(ByteBufferUtil.readWithShortLength(ifile)); +nextKey = sstable.decorateKey(ByteBufferUtil.readWithShortLength(ifile)); nextEntry = rowIndexEntrySerializer.deserialize(ifile); if (!currentRange.contains(nextKey)) http://git-wip-us.apache.org/repos/asf/cassandra/blob/69f77cbd/src/java/org/apache/cassandra/io/sstable/format/big/BigTableWriter.java -- diff --git a/src/java/org/apache/cassandra/io/sstable/format/big/BigTableWriter.java b/src/java/org/apache/cassandra/io/sstable/format/big/BigTableWriter.java index ff279a8..5607a7e 100644 --- a/src/java/org/apache/cassandra/io/sstable/format/big/BigTableWriter.java +++ b/src/java/org/apache/cassandra/io/sstable/format/big/BigTableWriter.java @@ -19,7 +19,6 @@ package org.apache.cassandra.io.sstable.format.big; import java.io.*; import java.util.Map; -import java.util.Set; import org.apache.cassandra.db.*; import org.apache.cassandra.db.lifecycle.LifecycleTransaction; @@ -32,7 +31,6 @@ import org.slf4j.LoggerFactory; import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.db.rows.*; -import org.apache.cassandra.dht.IPartitioner; import org.apache.cassandra.io.FSWriteError; import org.apache.cassandra.io.compress.CompressedSequentialWriter; import org.apache.cassandra.io.sstable.metadata.MetadataCollector; @@ -62,12 +60,11 @@ public class BigTableWriter extends SSTableWriter Long keyCount, Long repairedAt, CFMetaData metadata, - IPartitioner partitioner, MetadataCollector metadataCollector, SerializationHeader header, LifecycleTransaction txn) { -super(descriptor, keyCount, repairedAt, metadata, partitioner, metadataCollector, header); +super(descriptor, keyCount, repairedAt, metadata, metadataCollector, header); txn.trackNew(this); // must track before any files are created if (compression) @@ -243,13 +240,12 @@ public class BigTableWriter extends SSTableWriter StatsMetadata stats = statsMetadata(); assert boundary.indexLength > 0 && boundary.dataLength > 0; // open the reader early -IndexSummary indexSummary = iwriter.summary.build(partitioner, boundary); +IndexSummary indexSummary = iwriter.summary.build(metadata.partitioner, boundary); SegmentedFile ifile = iwriter.builder.buildIndex(descriptor, indexSummary, boundary); SegmentedFile dfile = dbuilder.buildData(descriptor, stats, boundary); SSTableReader sstable = SSTableReader.internalOpen(descriptor,
[1/4] cassandra git commit: Stop accessing the partitioner directly via StorageService
Repository: cassandra Updated Branches: refs/heads/trunk df3b6027b -> 69f77cbdd http://git-wip-us.apache.org/repos/asf/cassandra/blob/69f77cbd/test/unit/org/apache/cassandra/db/ScrubTest.java -- diff --git a/test/unit/org/apache/cassandra/db/ScrubTest.java b/test/unit/org/apache/cassandra/db/ScrubTest.java index ee51a4d..25b9cde 100644 --- a/test/unit/org/apache/cassandra/db/ScrubTest.java +++ b/test/unit/org/apache/cassandra/db/ScrubTest.java @@ -22,8 +22,6 @@ import java.io.File; import java.io.IOError; import java.io.IOException; import java.io.RandomAccessFile; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; import java.nio.ByteBuffer; import java.util.*; import java.util.concurrent.ExecutionException; @@ -44,9 +42,9 @@ import org.apache.cassandra.cql3.UntypedResultSet; import org.apache.cassandra.db.compaction.CompactionManager; import org.apache.cassandra.db.compaction.OperationType; import org.apache.cassandra.db.compaction.Scrubber; -import org.apache.cassandra.db.index.SecondaryIndex; import org.apache.cassandra.db.lifecycle.LifecycleTransaction; import org.apache.cassandra.db.marshal.*; +import org.apache.cassandra.db.marshal.UUIDType; import org.apache.cassandra.db.partitions.Partition; import org.apache.cassandra.db.partitions.PartitionUpdate; import org.apache.cassandra.dht.ByteOrderedPartitioner; @@ -55,14 +53,10 @@ import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.exceptions.RequestExecutionException; import org.apache.cassandra.exceptions.WriteTimeoutException; import org.apache.cassandra.io.compress.CompressionMetadata; -import org.apache.cassandra.io.sstable.Component; -import org.apache.cassandra.io.sstable.Descriptor; -import org.apache.cassandra.io.sstable.SSTableRewriter; -import org.apache.cassandra.io.sstable.SSTableTxnWriter; +import org.apache.cassandra.io.sstable.*; import org.apache.cassandra.io.sstable.format.SSTableReader; import org.apache.cassandra.io.util.FileUtils; import org.apache.cassandra.schema.KeyspaceParams; -import org.apache.cassandra.service.StorageService; import org.apache.cassandra.utils.ByteBufferUtil; import static org.junit.Assert.*; @@ -79,6 +73,8 @@ public class ScrubTest public static final String CF_UUID = "UUIDKeys"; public static final String CF_INDEX1 = "Indexed1"; public static final String CF_INDEX2 = "Indexed2"; +public static final String CF_INDEX1_BYTEORDERED = "Indexed1_ordered"; +public static final String CF_INDEX2_BYTEORDERED = "Indexed2_ordered"; public static final String COL_INDEX = "birthdate"; public static final String COL_NON_INDEX = "notbirthdate"; @@ -98,7 +94,9 @@ public class ScrubTest .compressionParameters(SchemaLoader.getCompressionParameters(COMPRESSION_CHUNK_LENGTH)), SchemaLoader.standardCFMD(KEYSPACE, CF_UUID, 0, UUIDType.instance), SchemaLoader.keysIndexCFMD(KEYSPACE, CF_INDEX1, true), -SchemaLoader.compositeIndexCFMD(KEYSPACE, CF_INDEX2, true)); +SchemaLoader.compositeIndexCFMD(KEYSPACE, CF_INDEX2, true), +SchemaLoader.keysIndexCFMD(KEYSPACE, CF_INDEX1_BYTEORDERED, true).copy(ByteOrderedPartitioner.instance), +SchemaLoader.compositeIndexCFMD(KEYSPACE, CF_INDEX2_BYTEORDERED, true).copy(ByteOrderedPartitioner.instance)); } @Test @@ -306,7 +304,7 @@ public class ScrubTest { // This test assumes ByteOrderPartitioner to create out-of-order SSTable IPartitioner oldPartitioner = DatabaseDescriptor.getPartitioner(); -DatabaseDescriptor.setPartitioner(new ByteOrderedPartitioner()); +DatabaseDescriptor.setPartitionerUnsafe(new ByteOrderedPartitioner()); // Create out-of-order SSTable File tempDir = File.createTempFile("ScrubTest.testScrubOutOfOrder", "").getParentFile(); @@ -380,7 +378,7 @@ public class ScrubTest { FileUtils.deleteRecursive(tempDataDir); // reset partitioner -DatabaseDescriptor.setPartitioner(oldPartitioner); +DatabaseDescriptor.setPartitionerUnsafe(oldPartitioner); } } @@ -394,9 +392,9 @@ public class ScrubTest CompressionMetadata compData = CompressionMetadata.create(sstable.getFilename()); CompressionMetadata.Chunk chunk1 = compData.chunkFor( -sstable.getPosition(PartitionPosition.ForKey.get(key1, sstable.partitioner), SSTableReader.Operator.EQ).position); +sstable.getPosition(PartitionPosition.ForKey.get(key1, sstable.getPartitioner()), SSTableReader.Operator.EQ).position); CompressionMetadata.Chunk chunk2 = compData.chunkF
[4/4] cassandra git commit: Stop accessing the partitioner directly via StorageService
Stop accessing the partitioner directly via StorageService Changes the way the partitioner is accessed. Partitioner is now stored and accessed according to the reason for needing it: * if it is to access a table / prepare a statement, the partitioner relevant to this table can be found in its CFMetaData. * if it is to route messages to the relevant member of the cluster, the partitioner in TokenMetadata is to be used. patch by Branimir Lambov; reviewed by Aleksey Yeschenko for CASSANDRA-8143 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/69f77cbd Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/69f77cbd Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/69f77cbd Branch: refs/heads/trunk Commit: 69f77cbddd4c74448f227e9aceef84d345118184 Parents: df3b602 Author: Branimir Lambov Authored: Fri Jul 3 14:38:40 2015 +0100 Committer: Aleksey Yeschenko Committed: Fri Jul 31 14:42:47 2015 +0300 -- .../org/apache/cassandra/config/CFMetaData.java | 64 +++- .../cassandra/config/DatabaseDescriptor.java| 7 +- .../org/apache/cassandra/config/Schema.java | 2 +- .../apache/cassandra/cql3/TokenRelation.java| 7 +- .../cassandra/cql3/functions/TokenFct.java | 10 +- .../restrictions/StatementRestrictions.java | 2 +- .../cql3/restrictions/TokenFilter.java | 14 +- .../cql3/restrictions/TokenRestriction.java | 23 +-- .../cql3/statements/BatchStatement.java | 5 +- .../cql3/statements/ModificationStatement.java | 7 +- .../cql3/statements/SelectStatement.java| 2 +- .../db/AbstractReadCommandBuilder.java | 11 +- .../apache/cassandra/db/BatchlogManager.java| 7 +- .../apache/cassandra/db/ColumnFamilyStore.java | 35 ++-- src/java/org/apache/cassandra/db/DataRange.java | 3 +- .../cassandra/db/HintedHandOffManager.java | 29 ++-- src/java/org/apache/cassandra/db/Memtable.java | 1 - src/java/org/apache/cassandra/db/Mutation.java | 26 ++- .../apache/cassandra/db/PartitionPosition.java | 2 +- .../cassandra/db/PartitionRangeReadCommand.java | 2 +- .../apache/cassandra/db/RowUpdateBuilder.java | 2 +- .../db/SinglePartitionNamesCommand.java | 12 ++ .../db/SinglePartitionReadCommand.java | 18 ++- .../db/SinglePartitionSliceCommand.java | 17 ++ .../org/apache/cassandra/db/SystemKeyspace.java | 18 +-- .../db/compaction/CompactionManager.java| 4 +- .../db/compaction/LeveledManifest.java | 2 +- .../cassandra/db/compaction/Scrubber.java | 4 +- .../cassandra/db/compaction/Upgrader.java | 1 - .../cassandra/db/compaction/Verifier.java | 2 +- .../writers/DefaultCompactionWriter.java| 1 - .../writers/MajorLeveledCompactionWriter.java | 2 - .../writers/MaxSSTableSizeWriter.java | 2 - .../SplittingSizeTieredCompactionWriter.java| 2 - .../AbstractSimplePerColumnSecondaryIndex.java | 4 +- .../cassandra/db/index/SecondaryIndex.java | 20 +-- .../db/index/composites/CompositesIndex.java| 2 +- .../CompositesIndexOnClusteringKey.java | 3 +- .../db/index/composites/CompositesSearcher.java | 2 +- .../cassandra/db/index/keys/KeysIndex.java | 3 +- .../cassandra/db/index/keys/KeysSearcher.java | 2 +- .../db/marshal/LocalByPartionerType.java| 97 .../db/marshal/PartitionerDefinedOrder.java | 91 +++ .../db/partitions/AtomicBTreePartition.java | 4 +- .../db/partitions/PartitionUpdate.java | 108 ++--- .../rows/UnfilteredRowIteratorSerializer.java | 3 +- .../cassandra/db/view/MaterializedView.java | 7 +- .../apache/cassandra/db/view/TemporalRow.java | 2 +- .../org/apache/cassandra/dht/BootStrapper.java | 12 +- .../cassandra/dht/ByteOrderedPartitioner.java | 5 + .../org/apache/cassandra/dht/IPartitioner.java | 6 + .../apache/cassandra/dht/LocalPartitioner.java | 5 + .../cassandra/dht/Murmur3Partitioner.java | 7 + .../dht/OrderPreservingPartitioner.java | 5 + .../apache/cassandra/dht/RandomPartitioner.java | 7 + .../org/apache/cassandra/dht/RangeStreamer.java | 2 +- .../dht/tokenallocator/TokenAllocation.java | 8 +- src/java/org/apache/cassandra/gms/Gossiper.java | 2 +- .../io/sstable/AbstractSSTableSimpleWriter.java | 10 +- .../cassandra/io/sstable/CQLSSTableWriter.java | 15 +- .../cassandra/io/sstable/KeyIterator.java | 8 +- .../io/sstable/ReducingKeyIterator.java | 2 +- .../apache/cassandra/io/sstable/SSTable.java| 21 ++- .../cassandra/io/sstable/SSTableLoader.java | 20 +-- .../io/sstable/SSTableSimpleUnsortedWriter.java | 5 +- .../io/sstable/SSTableSimpleWriter.java | 4 +- .../io/sstable/format/SSTableReader.java| 74
[1/4] cassandra git commit: Revert "Revert "Stop accessing the partitioner directly via StorageService""
Repository: cassandra Updated Branches: refs/heads/trunk 43139f866 -> 0a08525ad http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/test/unit/org/apache/cassandra/db/ScrubTest.java -- diff --git a/test/unit/org/apache/cassandra/db/ScrubTest.java b/test/unit/org/apache/cassandra/db/ScrubTest.java index ee51a4d..25b9cde 100644 --- a/test/unit/org/apache/cassandra/db/ScrubTest.java +++ b/test/unit/org/apache/cassandra/db/ScrubTest.java @@ -22,8 +22,6 @@ import java.io.File; import java.io.IOError; import java.io.IOException; import java.io.RandomAccessFile; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; import java.nio.ByteBuffer; import java.util.*; import java.util.concurrent.ExecutionException; @@ -44,9 +42,9 @@ import org.apache.cassandra.cql3.UntypedResultSet; import org.apache.cassandra.db.compaction.CompactionManager; import org.apache.cassandra.db.compaction.OperationType; import org.apache.cassandra.db.compaction.Scrubber; -import org.apache.cassandra.db.index.SecondaryIndex; import org.apache.cassandra.db.lifecycle.LifecycleTransaction; import org.apache.cassandra.db.marshal.*; +import org.apache.cassandra.db.marshal.UUIDType; import org.apache.cassandra.db.partitions.Partition; import org.apache.cassandra.db.partitions.PartitionUpdate; import org.apache.cassandra.dht.ByteOrderedPartitioner; @@ -55,14 +53,10 @@ import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.exceptions.RequestExecutionException; import org.apache.cassandra.exceptions.WriteTimeoutException; import org.apache.cassandra.io.compress.CompressionMetadata; -import org.apache.cassandra.io.sstable.Component; -import org.apache.cassandra.io.sstable.Descriptor; -import org.apache.cassandra.io.sstable.SSTableRewriter; -import org.apache.cassandra.io.sstable.SSTableTxnWriter; +import org.apache.cassandra.io.sstable.*; import org.apache.cassandra.io.sstable.format.SSTableReader; import org.apache.cassandra.io.util.FileUtils; import org.apache.cassandra.schema.KeyspaceParams; -import org.apache.cassandra.service.StorageService; import org.apache.cassandra.utils.ByteBufferUtil; import static org.junit.Assert.*; @@ -79,6 +73,8 @@ public class ScrubTest public static final String CF_UUID = "UUIDKeys"; public static final String CF_INDEX1 = "Indexed1"; public static final String CF_INDEX2 = "Indexed2"; +public static final String CF_INDEX1_BYTEORDERED = "Indexed1_ordered"; +public static final String CF_INDEX2_BYTEORDERED = "Indexed2_ordered"; public static final String COL_INDEX = "birthdate"; public static final String COL_NON_INDEX = "notbirthdate"; @@ -98,7 +94,9 @@ public class ScrubTest .compressionParameters(SchemaLoader.getCompressionParameters(COMPRESSION_CHUNK_LENGTH)), SchemaLoader.standardCFMD(KEYSPACE, CF_UUID, 0, UUIDType.instance), SchemaLoader.keysIndexCFMD(KEYSPACE, CF_INDEX1, true), -SchemaLoader.compositeIndexCFMD(KEYSPACE, CF_INDEX2, true)); +SchemaLoader.compositeIndexCFMD(KEYSPACE, CF_INDEX2, true), +SchemaLoader.keysIndexCFMD(KEYSPACE, CF_INDEX1_BYTEORDERED, true).copy(ByteOrderedPartitioner.instance), +SchemaLoader.compositeIndexCFMD(KEYSPACE, CF_INDEX2_BYTEORDERED, true).copy(ByteOrderedPartitioner.instance)); } @Test @@ -306,7 +304,7 @@ public class ScrubTest { // This test assumes ByteOrderPartitioner to create out-of-order SSTable IPartitioner oldPartitioner = DatabaseDescriptor.getPartitioner(); -DatabaseDescriptor.setPartitioner(new ByteOrderedPartitioner()); +DatabaseDescriptor.setPartitionerUnsafe(new ByteOrderedPartitioner()); // Create out-of-order SSTable File tempDir = File.createTempFile("ScrubTest.testScrubOutOfOrder", "").getParentFile(); @@ -380,7 +378,7 @@ public class ScrubTest { FileUtils.deleteRecursive(tempDataDir); // reset partitioner -DatabaseDescriptor.setPartitioner(oldPartitioner); +DatabaseDescriptor.setPartitionerUnsafe(oldPartitioner); } } @@ -394,9 +392,9 @@ public class ScrubTest CompressionMetadata compData = CompressionMetadata.create(sstable.getFilename()); CompressionMetadata.Chunk chunk1 = compData.chunkFor( -sstable.getPosition(PartitionPosition.ForKey.get(key1, sstable.partitioner), SSTableReader.Operator.EQ).position); +sstable.getPosition(PartitionPosition.ForKey.get(key1, sstable.getPartitioner()), SSTableReader.Operator.EQ).position); CompressionMetadata.Chunk chunk2 = compData.chunkF
[3/4] cassandra git commit: Revert "Revert "Stop accessing the partitioner directly via StorageService""
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/src/java/org/apache/cassandra/db/index/SecondaryIndex.java -- diff --git a/src/java/org/apache/cassandra/db/index/SecondaryIndex.java b/src/java/org/apache/cassandra/db/index/SecondaryIndex.java index 94031ab..9221090 100644 --- a/src/java/org/apache/cassandra/db/index/SecondaryIndex.java +++ b/src/java/org/apache/cassandra/db/index/SecondaryIndex.java @@ -42,15 +42,12 @@ import org.apache.cassandra.db.index.keys.KeysIndex; import org.apache.cassandra.db.lifecycle.SSTableSet; import org.apache.cassandra.db.lifecycle.View; import org.apache.cassandra.db.marshal.AbstractType; -import org.apache.cassandra.db.marshal.BytesType; -import org.apache.cassandra.db.marshal.LocalByPartionerType; +import org.apache.cassandra.dht.LocalPartitioner; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.io.sstable.format.SSTableReader; import org.apache.cassandra.exceptions.InvalidRequestException; import org.apache.cassandra.io.sstable.ReducingKeyIterator; -import org.apache.cassandra.service.StorageService; import org.apache.cassandra.utils.FBUtilities; - import org.apache.cassandra.utils.concurrent.Refs; /** @@ -79,10 +76,6 @@ public abstract class SecondaryIndex */ public static final String INDEX_ENTRIES_OPTION_NAME = "index_keys_and_values"; -public static final AbstractType keyComparator = StorageService.getPartitioner().preservesOrder() - ? BytesType.instance - : new LocalByPartionerType(StorageService.getPartitioner()); - /** * Base CF that has many indexes */ @@ -303,7 +296,7 @@ public abstract class SecondaryIndex */ public DecoratedKey getIndexKeyFor(ByteBuffer value) { -return getIndexCfs().partitioner.decorateKey(value); +return getIndexCfs().decorateKey(value); } /** @@ -381,11 +374,20 @@ public abstract class SecondaryIndex */ public static CFMetaData newIndexMetadata(CFMetaData baseMetadata, ColumnDefinition def) { +return newIndexMetadata(baseMetadata, def, def.type); +} + +/** + * Create the index metadata for the index on a given column of a given table. + */ +static CFMetaData newIndexMetadata(CFMetaData baseMetadata, ColumnDefinition def, AbstractType comparator) +{ if (def.getIndexType() == IndexType.CUSTOM) return null; CFMetaData.Builder builder = CFMetaData.Builder.create(baseMetadata.ksName, baseMetadata.indexColumnFamilyName(def)) .withId(baseMetadata.cfId) + .withPartitioner(new LocalPartitioner(comparator)) .addPartitionKey(def.name, def.type); if (def.getIndexType() == IndexType.COMPOSITES) http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/src/java/org/apache/cassandra/db/index/composites/CompositesIndex.java -- diff --git a/src/java/org/apache/cassandra/db/index/composites/CompositesIndex.java b/src/java/org/apache/cassandra/db/index/composites/CompositesIndex.java index 42861c5..29f235c 100644 --- a/src/java/org/apache/cassandra/db/index/composites/CompositesIndex.java +++ b/src/java/org/apache/cassandra/db/index/composites/CompositesIndex.java @@ -101,7 +101,7 @@ public abstract class CompositesIndex extends AbstractSimplePerColumnSecondaryIn protected static void addGenericClusteringColumns(CFMetaData.Builder indexMetadata, CFMetaData baseMetadata, ColumnDefinition columnDef) { -indexMetadata.addClusteringColumn("partition_key", SecondaryIndex.keyComparator); +indexMetadata.addClusteringColumn("partition_key", baseMetadata.partitioner.partitionOrdering()); for (ColumnDefinition def : baseMetadata.clusteringColumns()) indexMetadata.addClusteringColumn(def.name, def.type); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/src/java/org/apache/cassandra/db/index/composites/CompositesIndexOnClusteringKey.java -- diff --git a/src/java/org/apache/cassandra/db/index/composites/CompositesIndexOnClusteringKey.java b/src/java/org/apache/cassandra/db/index/composites/CompositesIndexOnClusteringKey.java index 6529ad9..cd4aff9 100644 --- a/src/java/org/apache/cassandra/db/index/composites/CompositesIndexOnClusteringKey.java +++ b/src/java/org/apache/cassandra/db/index/composites/CompositesIndexOnClusteringKey.java @@ -24,7 +24,6 @@ import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.config.ColumnDefinition; import org.apache.ca
[2/4] cassandra git commit: Revert "Revert "Stop accessing the partitioner directly via StorageService""
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/src/java/org/apache/cassandra/io/sstable/format/big/BigTableScanner.java -- diff --git a/src/java/org/apache/cassandra/io/sstable/format/big/BigTableScanner.java b/src/java/org/apache/cassandra/io/sstable/format/big/BigTableScanner.java index 0451a98..1b3b407 100644 --- a/src/java/org/apache/cassandra/io/sstable/format/big/BigTableScanner.java +++ b/src/java/org/apache/cassandra/io/sstable/format/big/BigTableScanner.java @@ -172,7 +172,7 @@ public class BigTableScanner implements ISSTableScanner while (!ifile.isEOF()) { indexPosition = ifile.getFilePointer(); -DecoratedKey indexDecoratedKey = sstable.partitioner.decorateKey(ByteBufferUtil.readWithShortLength(ifile)); +DecoratedKey indexDecoratedKey = sstable.decorateKey(ByteBufferUtil.readWithShortLength(ifile)); if (indexDecoratedKey.compareTo(currentRange.left) > 0 || currentRange.contains(indexDecoratedKey)) { // Found, just read the dataPosition and seek into index and data files @@ -282,7 +282,7 @@ public class BigTableScanner implements ISSTableScanner if (ifile.isEOF()) return endOfData(); -currentKey = sstable.partitioner.decorateKey(ByteBufferUtil.readWithShortLength(ifile)); +currentKey = sstable.decorateKey(ByteBufferUtil.readWithShortLength(ifile)); currentEntry = rowIndexEntrySerializer.deserialize(ifile); } while (!currentRange.contains(currentKey)); } @@ -301,7 +301,7 @@ public class BigTableScanner implements ISSTableScanner else { // we need the position of the start of the next key, regardless of whether it falls in the current range -nextKey = sstable.partitioner.decorateKey(ByteBufferUtil.readWithShortLength(ifile)); +nextKey = sstable.decorateKey(ByteBufferUtil.readWithShortLength(ifile)); nextEntry = rowIndexEntrySerializer.deserialize(ifile); if (!currentRange.contains(nextKey)) http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/src/java/org/apache/cassandra/io/sstable/format/big/BigTableWriter.java -- diff --git a/src/java/org/apache/cassandra/io/sstable/format/big/BigTableWriter.java b/src/java/org/apache/cassandra/io/sstable/format/big/BigTableWriter.java index ff279a8..5607a7e 100644 --- a/src/java/org/apache/cassandra/io/sstable/format/big/BigTableWriter.java +++ b/src/java/org/apache/cassandra/io/sstable/format/big/BigTableWriter.java @@ -19,7 +19,6 @@ package org.apache.cassandra.io.sstable.format.big; import java.io.*; import java.util.Map; -import java.util.Set; import org.apache.cassandra.db.*; import org.apache.cassandra.db.lifecycle.LifecycleTransaction; @@ -32,7 +31,6 @@ import org.slf4j.LoggerFactory; import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.db.rows.*; -import org.apache.cassandra.dht.IPartitioner; import org.apache.cassandra.io.FSWriteError; import org.apache.cassandra.io.compress.CompressedSequentialWriter; import org.apache.cassandra.io.sstable.metadata.MetadataCollector; @@ -62,12 +60,11 @@ public class BigTableWriter extends SSTableWriter Long keyCount, Long repairedAt, CFMetaData metadata, - IPartitioner partitioner, MetadataCollector metadataCollector, SerializationHeader header, LifecycleTransaction txn) { -super(descriptor, keyCount, repairedAt, metadata, partitioner, metadataCollector, header); +super(descriptor, keyCount, repairedAt, metadata, metadataCollector, header); txn.trackNew(this); // must track before any files are created if (compression) @@ -243,13 +240,12 @@ public class BigTableWriter extends SSTableWriter StatsMetadata stats = statsMetadata(); assert boundary.indexLength > 0 && boundary.dataLength > 0; // open the reader early -IndexSummary indexSummary = iwriter.summary.build(partitioner, boundary); +IndexSummary indexSummary = iwriter.summary.build(metadata.partitioner, boundary); SegmentedFile ifile = iwriter.builder.buildIndex(descriptor, indexSummary, boundary); SegmentedFile dfile = dbuilder.buildData(descriptor, stats, boundary); SSTableReader sstable = SSTableReader.internalOpen(descriptor,
[4/4] cassandra git commit: Revert "Revert "Stop accessing the partitioner directly via StorageService""
Revert "Revert "Stop accessing the partitioner directly via StorageService"" This reverts commit a22ce89e868644ea04f0f3dacec05fff1673a345. Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/0a08525a Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/0a08525a Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/0a08525a Branch: refs/heads/trunk Commit: 0a08525ad236f78df05c854dead62f300eae271d Parents: 43139f8 Author: Aleksey Yeschenko Authored: Sat Aug 1 01:33:20 2015 +0300 Committer: Aleksey Yeschenko Committed: Sat Aug 1 01:33:51 2015 +0300 -- .../org/apache/cassandra/config/CFMetaData.java | 64 +++- .../cassandra/config/DatabaseDescriptor.java| 7 +- .../org/apache/cassandra/config/Schema.java | 2 +- .../apache/cassandra/cql3/TokenRelation.java| 7 +- .../cassandra/cql3/functions/TokenFct.java | 10 +- .../restrictions/StatementRestrictions.java | 2 +- .../cql3/restrictions/TokenFilter.java | 14 +- .../cql3/restrictions/TokenRestriction.java | 23 +-- .../cql3/statements/BatchStatement.java | 5 +- .../cql3/statements/ModificationStatement.java | 7 +- .../cql3/statements/SelectStatement.java| 2 +- .../db/AbstractReadCommandBuilder.java | 11 +- .../apache/cassandra/db/BatchlogManager.java| 7 +- .../apache/cassandra/db/ColumnFamilyStore.java | 35 ++-- src/java/org/apache/cassandra/db/DataRange.java | 3 +- .../cassandra/db/HintedHandOffManager.java | 29 ++-- src/java/org/apache/cassandra/db/Memtable.java | 1 - src/java/org/apache/cassandra/db/Mutation.java | 28 ++-- .../apache/cassandra/db/PartitionPosition.java | 2 +- .../cassandra/db/PartitionRangeReadCommand.java | 2 +- .../apache/cassandra/db/RowUpdateBuilder.java | 2 +- .../db/SinglePartitionNamesCommand.java | 12 ++ .../db/SinglePartitionReadCommand.java | 18 ++- .../db/SinglePartitionSliceCommand.java | 17 ++ .../org/apache/cassandra/db/SystemKeyspace.java | 18 +-- .../db/compaction/CompactionManager.java| 4 +- .../db/compaction/LeveledManifest.java | 2 +- .../cassandra/db/compaction/Scrubber.java | 4 +- .../cassandra/db/compaction/Upgrader.java | 1 - .../cassandra/db/compaction/Verifier.java | 2 +- .../writers/DefaultCompactionWriter.java| 1 - .../writers/MajorLeveledCompactionWriter.java | 2 - .../writers/MaxSSTableSizeWriter.java | 2 - .../SplittingSizeTieredCompactionWriter.java| 2 - .../AbstractSimplePerColumnSecondaryIndex.java | 4 +- .../cassandra/db/index/SecondaryIndex.java | 20 +-- .../db/index/composites/CompositesIndex.java| 2 +- .../CompositesIndexOnClusteringKey.java | 3 +- .../db/index/composites/CompositesSearcher.java | 2 +- .../cassandra/db/index/keys/KeysIndex.java | 3 +- .../cassandra/db/index/keys/KeysSearcher.java | 2 +- .../db/marshal/LocalByPartionerType.java| 97 .../db/marshal/PartitionerDefinedOrder.java | 91 +++ .../db/partitions/AtomicBTreePartition.java | 4 +- .../db/partitions/PartitionUpdate.java | 108 ++--- .../rows/UnfilteredRowIteratorSerializer.java | 3 +- .../cassandra/db/view/MaterializedView.java | 7 +- .../apache/cassandra/db/view/TemporalRow.java | 2 +- .../org/apache/cassandra/dht/BootStrapper.java | 12 +- .../cassandra/dht/ByteOrderedPartitioner.java | 5 + .../org/apache/cassandra/dht/IPartitioner.java | 6 + .../apache/cassandra/dht/LocalPartitioner.java | 5 + .../cassandra/dht/Murmur3Partitioner.java | 7 + .../dht/OrderPreservingPartitioner.java | 5 + .../apache/cassandra/dht/RandomPartitioner.java | 7 + .../org/apache/cassandra/dht/RangeStreamer.java | 2 +- .../dht/tokenallocator/TokenAllocation.java | 8 +- src/java/org/apache/cassandra/gms/Gossiper.java | 2 +- .../io/sstable/AbstractSSTableSimpleWriter.java | 10 +- .../cassandra/io/sstable/CQLSSTableWriter.java | 15 +- .../cassandra/io/sstable/KeyIterator.java | 8 +- .../io/sstable/ReducingKeyIterator.java | 2 +- .../apache/cassandra/io/sstable/SSTable.java| 21 ++- .../cassandra/io/sstable/SSTableLoader.java | 20 +-- .../io/sstable/SSTableSimpleUnsortedWriter.java | 5 +- .../io/sstable/SSTableSimpleWriter.java | 4 +- .../io/sstable/format/SSTableReader.java| 74 - .../io/sstable/format/SSTableWriter.java| 16 +- .../io/sstable/format/big/BigFormat.java| 8 +- .../io/sstable/format/big/BigTableReader.java | 8 +- .../io/sstable/format/big/BigTableScanner.java | 6 +- .../io/sstable/format/big/BigTableWriter.java | 15 +- .../apache/cassandra/locator/Toke
cassandra git commit: Fix dtest failures caused by CASSANDRA-8143
Repository: cassandra Updated Branches: refs/heads/trunk b623375c5 -> 6aa7d6ce8 Fix dtest failures caused by CASSANDRA-8143 patch by Branimir Lambov; reviewed by Aleksey Yeschenko Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6aa7d6ce Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6aa7d6ce Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6aa7d6ce Branch: refs/heads/trunk Commit: 6aa7d6ce89f155b72111bffce54e9bee66080b03 Parents: b623375 Author: Branimir Lambov Authored: Sat Aug 1 18:17:11 2015 +0300 Committer: Aleksey Yeschenko Committed: Sun Aug 2 23:02:12 2015 +0300 -- .../org/apache/cassandra/config/CFMetaData.java | 17 ++ .../db/marshal/PartitionerDefinedOrder.java | 22 +- .../apache/cassandra/schema/SchemaKeyspace.java | 24 +++- .../cassandra/thrift/CassandraServer.java | 2 +- .../utils/NativeSSTableLoaderClient.java| 15 +++- .../cassandra/db/marshal/TypeParserTest.java| 24 +--- 6 files changed, 72 insertions(+), 32 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/6aa7d6ce/src/java/org/apache/cassandra/config/CFMetaData.java -- diff --git a/src/java/org/apache/cassandra/config/CFMetaData.java b/src/java/org/apache/cassandra/config/CFMetaData.java index ffb7b5e..43c95ea 100644 --- a/src/java/org/apache/cassandra/config/CFMetaData.java +++ b/src/java/org/apache/cassandra/config/CFMetaData.java @@ -24,6 +24,7 @@ import java.nio.ByteBuffer; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ThreadLocalRandom; +import java.util.stream.Collectors; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.MoreObjects; @@ -1390,6 +1391,22 @@ public final class CFMetaData : (isCompactTable() ? compactValueColumn().type : BytesType.instance); } +public static Set flagsFromStrings(Set strings) +{ +return strings.stream() + .map(String::toUpperCase) + .map(Flag::valueOf) + .collect(Collectors.toSet()); +} + +public static Set flagsToStrings(Set flags) +{ +return flags.stream() +.map(Flag::toString) +.map(String::toLowerCase) +.collect(Collectors.toSet()); +} + @Override public String toString() { http://git-wip-us.apache.org/repos/asf/cassandra/blob/6aa7d6ce/src/java/org/apache/cassandra/db/marshal/PartitionerDefinedOrder.java -- diff --git a/src/java/org/apache/cassandra/db/marshal/PartitionerDefinedOrder.java b/src/java/org/apache/cassandra/db/marshal/PartitionerDefinedOrder.java index efaea53..88f9906 100644 --- a/src/java/org/apache/cassandra/db/marshal/PartitionerDefinedOrder.java +++ b/src/java/org/apache/cassandra/db/marshal/PartitionerDefinedOrder.java @@ -18,14 +18,16 @@ package org.apache.cassandra.db.marshal; import java.nio.ByteBuffer; +import java.util.Iterator; +import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.cql3.Term; import org.apache.cassandra.db.PartitionPosition; import org.apache.cassandra.serializers.TypeSerializer; import org.apache.cassandra.serializers.MarshalException; - import org.apache.cassandra.dht.IPartitioner; import org.apache.cassandra.utils.ByteBufferUtil; +import org.apache.cassandra.utils.FBUtilities; /** for sorting columns representing row keys in the row ordering as determined by a partitioner. * Not intended for user-defined CFs, and will in fact error out if used with such. */ @@ -38,6 +40,18 @@ public class PartitionerDefinedOrder extends AbstractType this.partitioner = partitioner; } +public static AbstractType getInstance(TypeParser parser) +{ +IPartitioner partitioner = DatabaseDescriptor.getPartitioner(); +Iterator argIterator = parser.getKeyValueParameters().keySet().iterator(); +if (argIterator.hasNext()) +{ +partitioner = FBUtilities.newPartitioner(argIterator.next()); +assert !argIterator.hasNext(); +} +return partitioner.partitionOrdering(); +} + @Override public ByteBuffer compose(ByteBuffer bytes) { @@ -88,4 +102,10 @@ public class PartitionerDefinedOrder extends AbstractType { throw new UnsupportedOperationException("You can't do this with a local partitioner."); } + +@Override +public String toString() +{ +return String.format("%s(%
[1/5] cassandra git commit: Factor out TableParams from CFMetaData
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 6932bd879 -> b31845c4a http://git-wip-us.apache.org/repos/asf/cassandra/blob/b31845c4/test/unit/org/apache/cassandra/io/sstable/IndexSummaryManagerTest.java -- diff --git a/test/unit/org/apache/cassandra/io/sstable/IndexSummaryManagerTest.java b/test/unit/org/apache/cassandra/io/sstable/IndexSummaryManagerTest.java index 5f11f51..5493edb 100644 --- a/test/unit/org/apache/cassandra/io/sstable/IndexSummaryManagerTest.java +++ b/test/unit/org/apache/cassandra/io/sstable/IndexSummaryManagerTest.java @@ -39,7 +39,6 @@ import org.slf4j.LoggerFactory; import org.apache.cassandra.OrderedJUnit4ClassRunner; import org.apache.cassandra.SchemaLoader; import org.apache.cassandra.Util; -import org.apache.cassandra.cache.CachingOptions; import org.apache.cassandra.db.ColumnFamilyStore; import org.apache.cassandra.db.Keyspace; import org.apache.cassandra.db.RowUpdateBuilder; @@ -49,6 +48,7 @@ import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.io.sstable.format.SSTableReader; import org.apache.cassandra.db.lifecycle.LifecycleTransaction; import org.apache.cassandra.metrics.RestorableMeter; +import org.apache.cassandra.schema.CachingParams; import org.apache.cassandra.schema.KeyspaceParams; import org.apache.cassandra.utils.ByteBufferUtil; @@ -87,12 +87,11 @@ public class IndexSummaryManagerTest SchemaLoader.standardCFMD(KEYSPACE1, CF_STANDARDLOWiINTERVAL) .minIndexInterval(8) .maxIndexInterval(256) -.caching(CachingOptions.NONE), + .caching(CachingParams.CACHE_NOTHING), SchemaLoader.standardCFMD(KEYSPACE1, CF_STANDARDRACE) .minIndexInterval(8) .maxIndexInterval(256) -.caching(CachingOptions.NONE) -); + .caching(CachingParams.CACHE_NOTHING)); } @Before @@ -102,8 +101,8 @@ public class IndexSummaryManagerTest String cfname = CF_STANDARDLOWiINTERVAL; // index interval of 8, no key caching Keyspace keyspace = Keyspace.open(ksname); ColumnFamilyStore cfs = keyspace.getColumnFamilyStore(cfname); -originalMinIndexInterval = cfs.metadata.getMinIndexInterval(); -originalMaxIndexInterval = cfs.metadata.getMaxIndexInterval(); +originalMinIndexInterval = cfs.metadata.params.minIndexInterval; +originalMaxIndexInterval = cfs.metadata.params.maxIndexInterval; originalCapacity = IndexSummaryManager.instance.getMemoryPoolCapacityInMB(); } @@ -215,15 +214,15 @@ public class IndexSummaryManagerTest sstable.overrideReadMeter(new RestorableMeter(100.0, 100.0)); for (SSTableReader sstable : sstables) -assertEquals(cfs.metadata.getMinIndexInterval(), sstable.getEffectiveIndexInterval(), 0.001); +assertEquals(cfs.metadata.params.minIndexInterval, sstable.getEffectiveIndexInterval(), 0.001); // double the min_index_interval cfs.metadata.minIndexInterval(originalMinIndexInterval * 2); IndexSummaryManager.instance.redistributeSummaries(); for (SSTableReader sstable : cfs.getLiveSSTables()) { -assertEquals(cfs.metadata.getMinIndexInterval(), sstable.getEffectiveIndexInterval(), 0.001); -assertEquals(numRows / cfs.metadata.getMinIndexInterval(), sstable.getIndexSummarySize()); +assertEquals(cfs.metadata.params.minIndexInterval, sstable.getEffectiveIndexInterval(), 0.001); +assertEquals(numRows / cfs.metadata.params.minIndexInterval, sstable.getIndexSummarySize()); } // return min_index_interval to its original value @@ -231,8 +230,8 @@ public class IndexSummaryManagerTest IndexSummaryManager.instance.redistributeSummaries(); for (SSTableReader sstable : cfs.getLiveSSTables()) { -assertEquals(cfs.metadata.getMinIndexInterval(), sstable.getEffectiveIndexInterval(), 0.001); -assertEquals(numRows / cfs.metadata.getMinIndexInterval(), sstable.getIndexSummarySize()); +assertEquals(cfs.metadata.params.minIndexInterval, sstable.getEffectiveIndexInterval(), 0.001); +assertEquals(numRows / cfs.metadata.params.minIndexInterval, sstable.getIndexSummarySize()); } // halve the min_index_interval, but constrain the available space to exactly what we have now; as a result, @@ -281,7 +280,7 @@ public class IndexSummaryManagerTest redistributeSummaries(C
[4/5] cassandra git commit: Factor out TableParams from CFMetaData
http://git-wip-us.apache.org/repos/asf/cassandra/blob/b31845c4/src/java/org/apache/cassandra/db/ColumnFamilyStore.java -- diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java index c4377d6..d77cf1f 100644 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@ -34,19 +34,13 @@ import com.google.common.base.*; import com.google.common.base.Throwables; import com.google.common.collect.*; import com.google.common.util.concurrent.*; - -import org.apache.cassandra.db.lifecycle.*; -import org.apache.cassandra.io.FSWriteError; -import org.apache.cassandra.metrics.TableMetrics; -import org.json.simple.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.clearspring.analytics.stream.Counter; import org.apache.cassandra.cache.*; import org.apache.cassandra.concurrent.*; import org.apache.cassandra.config.*; -import org.apache.cassandra.config.CFMetaData.SpeculativeRetry; -import org.apache.cassandra.db.rows.*; import org.apache.cassandra.db.commitlog.CommitLog; import org.apache.cassandra.db.commitlog.ReplayPosition; import org.apache.cassandra.db.compaction.*; @@ -54,24 +48,28 @@ import org.apache.cassandra.db.filter.*; import org.apache.cassandra.db.index.SecondaryIndex; import org.apache.cassandra.db.index.SecondaryIndexManager; import org.apache.cassandra.db.view.MaterializedViewManager; +import org.apache.cassandra.db.lifecycle.*; import org.apache.cassandra.db.partitions.*; +import org.apache.cassandra.db.rows.*; import org.apache.cassandra.dht.*; import org.apache.cassandra.dht.Range; import org.apache.cassandra.exceptions.ConfigurationException; -import org.apache.cassandra.io.compress.CompressionParameters; -import org.apache.cassandra.io.sstable.Descriptor; +import org.apache.cassandra.io.FSWriteError; import org.apache.cassandra.io.sstable.*; +import org.apache.cassandra.io.sstable.Descriptor; import org.apache.cassandra.io.sstable.format.*; import org.apache.cassandra.io.util.FileUtils; import org.apache.cassandra.metrics.TableMetrics.Sampler; +import org.apache.cassandra.metrics.TableMetrics; +import org.apache.cassandra.schema.*; import org.apache.cassandra.service.CacheService; import org.apache.cassandra.service.StorageService; import org.apache.cassandra.utils.*; -import org.apache.cassandra.utils.concurrent.*; import org.apache.cassandra.utils.TopKSampler.SamplerResult; +import org.apache.cassandra.utils.concurrent.*; import org.apache.cassandra.utils.memory.MemtableAllocator; +import org.json.simple.*; -import com.clearspring.analytics.stream.Counter; import static org.apache.cassandra.utils.Throwables.maybeFail; @@ -185,10 +183,10 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean // only update these runtime-modifiable settings if they have not been modified. if (!minCompactionThreshold.isModified()) for (ColumnFamilyStore cfs : concatWithIndexes()) -cfs.minCompactionThreshold = new DefaultInteger(metadata.getMinCompactionThreshold()); +cfs.minCompactionThreshold = new DefaultInteger(metadata.params.compaction.minCompactionThreshold()); if (!maxCompactionThreshold.isModified()) for (ColumnFamilyStore cfs : concatWithIndexes()) -cfs.maxCompactionThreshold = new DefaultInteger(metadata.getMaxCompactionThreshold()); +cfs.maxCompactionThreshold = new DefaultInteger(metadata.params.compaction.maxCompactionThreshold()); compactionStrategyManager.maybeReload(metadata); @@ -205,7 +203,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean void scheduleFlush() { -int period = metadata.getMemtableFlushPeriod(); +int period = metadata.params.memtableFlushPeriodInMs; if (period > 0) { logger.debug("scheduling flush in {} ms", period); @@ -252,33 +250,25 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean public void setCompactionStrategyClass(String compactionStrategyClass) { -try -{ -metadata.compactionStrategyClass = CFMetaData.createCompactionStrategy(compactionStrategyClass); -compactionStrategyManager.maybeReload(metadata); -} -catch (ConfigurationException e) -{ -throw new IllegalArgumentException(e.getMessage()); -} +throw new UnsupportedOperationException("ColumnFamilyStore.setCompactionStrategyClass() method is no longer supported"); } public String getCompactionStrategyClass() { -return metadata.compactionStrategyClass.getName(); +return metadata.params.compaction.klass().getName(); } public Map getCompressionParameters() { -return
[5/5] cassandra git commit: Factor out TableParams from CFMetaData
Factor out TableParams from CFMetaData patch by Aleksey Yeschenko; reviewed by Robert Stupp for CASSANDRA-9712 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/b31845c4 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/b31845c4 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/b31845c4 Branch: refs/heads/cassandra-3.0 Commit: b31845c4a7982358a7c5bfd9bcf572fda6c1bfa9 Parents: 6932bd8 Author: Aleksey Yeschenko Authored: Sat Jul 18 01:59:00 2015 +0300 Committer: Aleksey Yeschenko Committed: Tue Aug 4 12:12:34 2015 +0300 -- NEWS.txt| 8 +- .../apache/cassandra/cache/CachingOptions.java | 291 -- .../org/apache/cassandra/config/CFMetaData.java | 540 + src/java/org/apache/cassandra/cql3/Cql.g| 12 +- .../AlterMaterializedViewStatement.java | 16 +- .../cql3/statements/AlterTableStatement.java| 19 +- .../cassandra/cql3/statements/CFPropDefs.java | 222 --- .../cassandra/cql3/statements/CFProperties.java | 4 +- .../cql3/statements/CreateTableStatement.java | 56 +- .../cql3/statements/KeyspaceAttributes.java | 36 +- .../cql3/statements/TableAttributes.java| 153 + .../apache/cassandra/db/ColumnFamilyStore.java | 71 +-- .../cassandra/db/HintedHandOffManager.java | 2 +- .../org/apache/cassandra/db/LivenessInfo.java | 2 +- src/java/org/apache/cassandra/db/Memtable.java | 2 +- .../apache/cassandra/db/RowUpdateBuilder.java | 2 +- .../db/SinglePartitionReadCommand.java | 4 +- .../org/apache/cassandra/db/SystemKeyspace.java | 21 +- .../cassandra/db/commitlog/CommitLog.java | 4 +- .../db/commitlog/CommitLogArchiver.java | 5 +- .../db/commitlog/CommitLogReplayer.java | 4 +- .../db/compaction/CompactionManager.java| 4 +- .../compaction/CompactionStrategyManager.java | 36 +- .../DateTieredCompactionStrategy.java | 12 +- .../cassandra/db/compaction/Scrubber.java | 2 +- .../SizeTieredCompactionStrategy.java | 14 +- .../cassandra/db/compaction/Upgrader.java | 2 +- .../apache/cassandra/db/rows/BufferCell.java| 4 +- .../cassandra/db/view/MaterializedView.java | 5 +- .../dht/OrderPreservingPartitioner.java | 2 +- .../apache/cassandra/hadoop/ConfigHelper.java | 6 +- .../io/compress/CompressedSequentialWriter.java | 4 +- .../io/compress/CompressionMetadata.java| 15 +- .../io/compress/CompressionParameters.java | 564 -- .../cassandra/io/compress/LZ4Compressor.java| 3 +- .../io/sstable/IndexSummaryManager.java | 4 +- .../io/sstable/format/SSTableReader.java| 26 +- .../io/sstable/format/SSTableWriter.java| 6 +- .../io/sstable/format/big/BigTableWriter.java | 6 +- .../cassandra/io/util/SequentialWriter.java | 4 +- .../apache/cassandra/schema/CachingParams.java | 196 +++ .../cassandra/schema/CompactionParams.java | 304 ++ .../cassandra/schema/CompressionParams.java | 579 +++ .../apache/cassandra/schema/KeyspaceParams.java | 95 +-- .../cassandra/schema/LegacySchemaMigrator.java | 122 ++-- .../cassandra/schema/ReplicationParams.java | 106 .../apache/cassandra/schema/SchemaKeyspace.java | 142 ++--- .../cassandra/schema/SpeculativeRetryParam.java | 160 + .../apache/cassandra/schema/TableParams.java| 338 +++ .../cassandra/service/AbstractReadExecutor.java | 9 +- .../apache/cassandra/service/CacheService.java | 2 +- .../cassandra/service/StorageService.java | 2 +- .../streaming/compress/CompressionInfo.java | 12 +- .../cassandra/thrift/CassandraServer.java | 7 +- .../cassandra/thrift/ThriftConversion.java | 181 -- .../org/apache/cassandra/utils/FBUtilities.java | 8 +- .../utils/NativeSSTableLoaderClient.java| 2 +- .../db/compaction/LongCompactionsTest.java | 10 +- .../LongLeveledCompactionStrategyTest.java | 4 +- test/unit/org/apache/cassandra/MockSchema.java | 4 +- .../unit/org/apache/cassandra/SchemaLoader.java | 50 +- .../apache/cassandra/config/CFMetaDataTest.java | 4 +- .../validation/entities/SecondaryIndexTest.java | 2 +- .../miscellaneous/CrcCheckChanceTest.java | 12 +- .../validation/miscellaneous/OverflowTest.java | 8 +- .../cql3/validation/operations/AlterTest.java | 14 +- .../SelectOrderedPartitionerTest.java | 2 +- .../apache/cassandra/db/HintedHandOffTest.java | 2 - .../apache/cassandra/db/RangeTombstoneTest.java | 5 - .../apache/cassandra/db/RowCacheCQLTest.java| 2 +- .../org/apache/cassandra/db/RowCacheTest.java | 7 +- .../unit/org/apache/cassandra/db/ScrubTest.java | 2 +- .../org/apache
[2/5] cassandra git commit: Factor out TableParams from CFMetaData
http://git-wip-us.apache.org/repos/asf/cassandra/blob/b31845c4/src/java/org/apache/cassandra/service/AbstractReadExecutor.java -- diff --git a/src/java/org/apache/cassandra/service/AbstractReadExecutor.java b/src/java/org/apache/cassandra/service/AbstractReadExecutor.java index 9a57f45..487a14c 100644 --- a/src/java/org/apache/cassandra/service/AbstractReadExecutor.java +++ b/src/java/org/apache/cassandra/service/AbstractReadExecutor.java @@ -28,7 +28,6 @@ import org.slf4j.LoggerFactory; import org.apache.cassandra.concurrent.Stage; import org.apache.cassandra.concurrent.StageManager; -import org.apache.cassandra.config.CFMetaData.SpeculativeRetry.RetryType; import org.apache.cassandra.config.ReadRepairDecision; import org.apache.cassandra.db.ColumnFamilyStore; import org.apache.cassandra.db.ConsistencyLevel; @@ -42,10 +41,10 @@ import org.apache.cassandra.exceptions.UnavailableException; import org.apache.cassandra.metrics.ReadRepairMetrics; import org.apache.cassandra.net.MessageOut; import org.apache.cassandra.net.MessagingService; +import org.apache.cassandra.schema.SpeculativeRetryParam; import org.apache.cassandra.service.StorageProxy.LocalReadRunnable; import org.apache.cassandra.tracing.TraceState; import org.apache.cassandra.tracing.Tracing; -import org.apache.cassandra.utils.FBUtilities; /** * Sends a read request to the replicas needed to satisfy a given ConsistencyLevel. @@ -159,10 +158,10 @@ public abstract class AbstractReadExecutor } ColumnFamilyStore cfs = keyspace.getColumnFamilyStore(command.metadata().cfId); -RetryType retryType = cfs.metadata.getSpeculativeRetry().type; +SpeculativeRetryParam retry = cfs.metadata.params.speculativeRetry; // Speculative retry is disabled *OR* there are simply no extra replicas to speculate. -if (retryType == RetryType.NONE || consistencyLevel.blockFor(keyspace) == allReplicas.size()) +if (retry.equals(SpeculativeRetryParam.NONE) || consistencyLevel.blockFor(keyspace) == allReplicas.size()) return new NeverSpeculatingReadExecutor(keyspace, command, consistencyLevel, targetReplicas); if (targetReplicas.size() == allReplicas.size()) @@ -190,7 +189,7 @@ public abstract class AbstractReadExecutor } targetReplicas.add(extraReplica); -if (retryType == RetryType.ALWAYS) +if (retry.equals(SpeculativeRetryParam.ALWAYS)) return new AlwaysSpeculatingReadExecutor(keyspace, cfs, command, consistencyLevel, targetReplicas); else // PERCENTILE or CUSTOM. return new SpeculatingReadExecutor(keyspace, cfs, command, consistencyLevel, targetReplicas); http://git-wip-us.apache.org/repos/asf/cassandra/blob/b31845c4/src/java/org/apache/cassandra/service/CacheService.java -- diff --git a/src/java/org/apache/cassandra/service/CacheService.java b/src/java/org/apache/cassandra/service/CacheService.java index 253e9e4..c9d9fa5 100644 --- a/src/java/org/apache/cassandra/service/CacheService.java +++ b/src/java/org/apache/cassandra/service/CacheService.java @@ -421,7 +421,7 @@ public class CacheService implements CacheServiceMBean public Future> deserialize(DataInputPlus in, final ColumnFamilyStore cfs) throws IOException { final ByteBuffer buffer = ByteBufferUtil.readWithLength(in); -final int rowsToCache = cfs.metadata.getCaching().rowCache.rowsToCache; +final int rowsToCache = cfs.metadata.params.caching.rowsPerPartitionToCache(); return StageManager.getStage(Stage.READ).submit(new Callable>() { http://git-wip-us.apache.org/repos/asf/cassandra/blob/b31845c4/src/java/org/apache/cassandra/service/StorageService.java -- diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java index 9ac94cc..f263a82 100644 --- a/src/java/org/apache/cassandra/service/StorageService.java +++ b/src/java/org/apache/cassandra/service/StorageService.java @@ -3277,7 +3277,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE Token token = tokens.get(index); Range range = new Range<>(prevToken, token); // always return an estimate > 0 (see CASSANDRA-7322) -splits.add(Pair.create(range, Math.max(cfs.metadata.getMinIndexInterval(), cfs.estimatedKeysForRange(range; +splits.add(Pair.create(range, Math.max(cfs.metadata.params.minIndexInterval, cfs.estimatedKeysForRange(range; prevToken = token; } return splits; http://git-wip-us.apache.org/repos/asf/cassandra/blob/b31845c4/src/java/org/apache/cassandra/streaming/compress/CompressionInfo
[3/5] cassandra git commit: Factor out TableParams from CFMetaData
http://git-wip-us.apache.org/repos/asf/cassandra/blob/b31845c4/src/java/org/apache/cassandra/schema/CachingParams.java -- diff --git a/src/java/org/apache/cassandra/schema/CachingParams.java b/src/java/org/apache/cassandra/schema/CachingParams.java new file mode 100644 index 000..2b5ab7c --- /dev/null +++ b/src/java/org/apache/cassandra/schema/CachingParams.java @@ -0,0 +1,196 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.schema; + +import java.util.HashMap; +import java.util.Map; + +import com.google.common.base.Objects; +import com.google.common.collect.ImmutableMap; +import org.apache.commons.lang3.StringUtils; + +import org.apache.cassandra.exceptions.ConfigurationException; + +import static java.lang.String.format; + +// CQL: {'keys' : 'ALL'|'NONE', 'rows_per_partition': '200'|'NONE'|'ALL'} +public final class CachingParams +{ +public enum Option +{ +KEYS, +ROWS_PER_PARTITION; + +@Override +public String toString() +{ +return name().toLowerCase(); +} +} + +private static final String ALL = "ALL"; +private static final String NONE = "NONE"; + +static final boolean DEFAULT_CACHE_KEYS = true; +static final int DEFAULT_ROWS_PER_PARTITION_TO_CACHE = 0; + +public static final CachingParams CACHE_NOTHING = new CachingParams(false, 0); +public static final CachingParams CACHE_KEYS = new CachingParams(true, 0); +public static final CachingParams CACHE_EVERYTHING = new CachingParams(true, Integer.MAX_VALUE); + +static final CachingParams DEFAULT = new CachingParams(DEFAULT_CACHE_KEYS, DEFAULT_ROWS_PER_PARTITION_TO_CACHE); + +final boolean cacheKeys; +final int rowsPerPartitionToCache; + +public CachingParams(boolean cacheKeys, int rowsPerPartitionToCache) +{ +this.cacheKeys = cacheKeys; +this.rowsPerPartitionToCache = rowsPerPartitionToCache; +} + +public boolean cacheKeys() +{ +return cacheKeys; +} + +public boolean cacheRows() +{ +return rowsPerPartitionToCache > 0; +} + +public boolean cacheAllRows() +{ +return rowsPerPartitionToCache == Integer.MAX_VALUE; +} + +public int rowsPerPartitionToCache() +{ +return rowsPerPartitionToCache; +} + +public static CachingParams fromMap(Map map) +{ +Map copy = new HashMap<>(map); + +String keys = copy.remove(Option.KEYS.toString()); +boolean cacheKeys = keys != null && keysFromString(keys); + +String rows = copy.remove(Option.ROWS_PER_PARTITION.toString()); +int rowsPerPartitionToCache = rows == null +? 0 +: rowsPerPartitionFromString(rows); + +if (!copy.isEmpty()) +{ +throw new ConfigurationException(format("Invalid caching sub-options %s: only '%s' and '%s' are allowed", +copy.keySet(), +Option.KEYS, + Option.ROWS_PER_PARTITION)); +} + +return new CachingParams(cacheKeys, rowsPerPartitionToCache); +} + +public Map asMap() +{ +return ImmutableMap.of(Option.KEYS.toString(), + keysAsString(), + Option.ROWS_PER_PARTITION.toString(), + rowsPerPartitionAsString()); +} + +private static boolean keysFromString(String value) +{ +if (value.equalsIgnoreCase(ALL)) +return true; + +if (value.equalsIgnoreCase(NONE)) +return false; + +throw new ConfigurationException(format("Invalid value '%s' for caching sub-option '%s': only '%s' and '%s' are allowed", +value, +Option.KEYS, +ALL, +NONE)); +} + +String keysAsString() +
[6/6] cassandra git commit: Merge branch 'cassandra-3.0' into trunk
Merge branch 'cassandra-3.0' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/becee6ae Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/becee6ae Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/becee6ae Branch: refs/heads/trunk Commit: becee6ae4a04f76d5998de1814c9d6e0164d998d Parents: 7d2a96e b31845c Author: Aleksey Yeschenko Authored: Tue Aug 4 12:16:04 2015 +0300 Committer: Aleksey Yeschenko Committed: Tue Aug 4 12:16:04 2015 +0300 -- NEWS.txt| 8 +- .../apache/cassandra/cache/CachingOptions.java | 291 -- .../org/apache/cassandra/config/CFMetaData.java | 540 + src/java/org/apache/cassandra/cql3/Cql.g| 12 +- .../AlterMaterializedViewStatement.java | 16 +- .../cql3/statements/AlterTableStatement.java| 19 +- .../cassandra/cql3/statements/CFPropDefs.java | 222 --- .../cassandra/cql3/statements/CFProperties.java | 4 +- .../cql3/statements/CreateTableStatement.java | 56 +- .../cql3/statements/KeyspaceAttributes.java | 36 +- .../cql3/statements/TableAttributes.java| 153 + .../apache/cassandra/db/ColumnFamilyStore.java | 71 +-- .../cassandra/db/HintedHandOffManager.java | 2 +- .../org/apache/cassandra/db/LivenessInfo.java | 2 +- src/java/org/apache/cassandra/db/Memtable.java | 2 +- .../apache/cassandra/db/RowUpdateBuilder.java | 2 +- .../db/SinglePartitionReadCommand.java | 4 +- .../org/apache/cassandra/db/SystemKeyspace.java | 21 +- .../cassandra/db/commitlog/CommitLog.java | 4 +- .../db/commitlog/CommitLogArchiver.java | 5 +- .../db/commitlog/CommitLogReplayer.java | 4 +- .../db/compaction/CompactionManager.java| 4 +- .../compaction/CompactionStrategyManager.java | 36 +- .../DateTieredCompactionStrategy.java | 12 +- .../cassandra/db/compaction/Scrubber.java | 2 +- .../SizeTieredCompactionStrategy.java | 14 +- .../cassandra/db/compaction/Upgrader.java | 2 +- .../apache/cassandra/db/rows/BufferCell.java| 4 +- .../cassandra/db/view/MaterializedView.java | 5 +- .../dht/OrderPreservingPartitioner.java | 2 +- .../apache/cassandra/hadoop/ConfigHelper.java | 6 +- .../io/compress/CompressedSequentialWriter.java | 4 +- .../io/compress/CompressionMetadata.java| 15 +- .../io/compress/CompressionParameters.java | 564 -- .../cassandra/io/compress/LZ4Compressor.java| 3 +- .../io/sstable/IndexSummaryManager.java | 4 +- .../io/sstable/format/SSTableReader.java| 26 +- .../io/sstable/format/SSTableWriter.java| 6 +- .../io/sstable/format/big/BigTableWriter.java | 6 +- .../cassandra/io/util/SequentialWriter.java | 4 +- .../apache/cassandra/schema/CachingParams.java | 196 +++ .../cassandra/schema/CompactionParams.java | 304 ++ .../cassandra/schema/CompressionParams.java | 579 +++ .../apache/cassandra/schema/KeyspaceParams.java | 95 +-- .../cassandra/schema/LegacySchemaMigrator.java | 122 ++-- .../cassandra/schema/ReplicationParams.java | 106 .../apache/cassandra/schema/SchemaKeyspace.java | 142 ++--- .../cassandra/schema/SpeculativeRetryParam.java | 160 + .../apache/cassandra/schema/TableParams.java| 338 +++ .../cassandra/service/AbstractReadExecutor.java | 9 +- .../apache/cassandra/service/CacheService.java | 2 +- .../cassandra/service/StorageService.java | 2 +- .../streaming/compress/CompressionInfo.java | 12 +- .../cassandra/thrift/CassandraServer.java | 7 +- .../cassandra/thrift/ThriftConversion.java | 181 -- .../org/apache/cassandra/utils/FBUtilities.java | 8 +- .../utils/NativeSSTableLoaderClient.java| 2 +- .../db/compaction/LongCompactionsTest.java | 10 +- .../LongLeveledCompactionStrategyTest.java | 4 +- test/unit/org/apache/cassandra/MockSchema.java | 4 +- .../unit/org/apache/cassandra/SchemaLoader.java | 50 +- .../apache/cassandra/config/CFMetaDataTest.java | 4 +- .../validation/entities/SecondaryIndexTest.java | 2 +- .../miscellaneous/CrcCheckChanceTest.java | 12 +- .../validation/miscellaneous/OverflowTest.java | 8 +- .../cql3/validation/operations/AlterTest.java | 14 +- .../SelectOrderedPartitionerTest.java | 2 +- .../apache/cassandra/db/HintedHandOffTest.java | 2 - .../apache/cassandra/db/RangeTombstoneTest.java | 5 - .../apache/cassandra/db/RowCacheCQLTest.java| 2 +- .../org/apache/cassandra/db/RowCacheTest.java | 7 +- .../unit/org/apache/cassandra/db/ScrubTest.java | 2 +- .../org/apache/cassandra/db/VerifyTest.java | 12 +- .../db
[2/6] cassandra git commit: Factor out TableParams from CFMetaData
http://git-wip-us.apache.org/repos/asf/cassandra/blob/b31845c4/src/java/org/apache/cassandra/service/AbstractReadExecutor.java -- diff --git a/src/java/org/apache/cassandra/service/AbstractReadExecutor.java b/src/java/org/apache/cassandra/service/AbstractReadExecutor.java index 9a57f45..487a14c 100644 --- a/src/java/org/apache/cassandra/service/AbstractReadExecutor.java +++ b/src/java/org/apache/cassandra/service/AbstractReadExecutor.java @@ -28,7 +28,6 @@ import org.slf4j.LoggerFactory; import org.apache.cassandra.concurrent.Stage; import org.apache.cassandra.concurrent.StageManager; -import org.apache.cassandra.config.CFMetaData.SpeculativeRetry.RetryType; import org.apache.cassandra.config.ReadRepairDecision; import org.apache.cassandra.db.ColumnFamilyStore; import org.apache.cassandra.db.ConsistencyLevel; @@ -42,10 +41,10 @@ import org.apache.cassandra.exceptions.UnavailableException; import org.apache.cassandra.metrics.ReadRepairMetrics; import org.apache.cassandra.net.MessageOut; import org.apache.cassandra.net.MessagingService; +import org.apache.cassandra.schema.SpeculativeRetryParam; import org.apache.cassandra.service.StorageProxy.LocalReadRunnable; import org.apache.cassandra.tracing.TraceState; import org.apache.cassandra.tracing.Tracing; -import org.apache.cassandra.utils.FBUtilities; /** * Sends a read request to the replicas needed to satisfy a given ConsistencyLevel. @@ -159,10 +158,10 @@ public abstract class AbstractReadExecutor } ColumnFamilyStore cfs = keyspace.getColumnFamilyStore(command.metadata().cfId); -RetryType retryType = cfs.metadata.getSpeculativeRetry().type; +SpeculativeRetryParam retry = cfs.metadata.params.speculativeRetry; // Speculative retry is disabled *OR* there are simply no extra replicas to speculate. -if (retryType == RetryType.NONE || consistencyLevel.blockFor(keyspace) == allReplicas.size()) +if (retry.equals(SpeculativeRetryParam.NONE) || consistencyLevel.blockFor(keyspace) == allReplicas.size()) return new NeverSpeculatingReadExecutor(keyspace, command, consistencyLevel, targetReplicas); if (targetReplicas.size() == allReplicas.size()) @@ -190,7 +189,7 @@ public abstract class AbstractReadExecutor } targetReplicas.add(extraReplica); -if (retryType == RetryType.ALWAYS) +if (retry.equals(SpeculativeRetryParam.ALWAYS)) return new AlwaysSpeculatingReadExecutor(keyspace, cfs, command, consistencyLevel, targetReplicas); else // PERCENTILE or CUSTOM. return new SpeculatingReadExecutor(keyspace, cfs, command, consistencyLevel, targetReplicas); http://git-wip-us.apache.org/repos/asf/cassandra/blob/b31845c4/src/java/org/apache/cassandra/service/CacheService.java -- diff --git a/src/java/org/apache/cassandra/service/CacheService.java b/src/java/org/apache/cassandra/service/CacheService.java index 253e9e4..c9d9fa5 100644 --- a/src/java/org/apache/cassandra/service/CacheService.java +++ b/src/java/org/apache/cassandra/service/CacheService.java @@ -421,7 +421,7 @@ public class CacheService implements CacheServiceMBean public Future> deserialize(DataInputPlus in, final ColumnFamilyStore cfs) throws IOException { final ByteBuffer buffer = ByteBufferUtil.readWithLength(in); -final int rowsToCache = cfs.metadata.getCaching().rowCache.rowsToCache; +final int rowsToCache = cfs.metadata.params.caching.rowsPerPartitionToCache(); return StageManager.getStage(Stage.READ).submit(new Callable>() { http://git-wip-us.apache.org/repos/asf/cassandra/blob/b31845c4/src/java/org/apache/cassandra/service/StorageService.java -- diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java index 9ac94cc..f263a82 100644 --- a/src/java/org/apache/cassandra/service/StorageService.java +++ b/src/java/org/apache/cassandra/service/StorageService.java @@ -3277,7 +3277,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE Token token = tokens.get(index); Range range = new Range<>(prevToken, token); // always return an estimate > 0 (see CASSANDRA-7322) -splits.add(Pair.create(range, Math.max(cfs.metadata.getMinIndexInterval(), cfs.estimatedKeysForRange(range; +splits.add(Pair.create(range, Math.max(cfs.metadata.params.minIndexInterval, cfs.estimatedKeysForRange(range; prevToken = token; } return splits; http://git-wip-us.apache.org/repos/asf/cassandra/blob/b31845c4/src/java/org/apache/cassandra/streaming/compress/CompressionInfo
[5/6] cassandra git commit: Factor out TableParams from CFMetaData
Factor out TableParams from CFMetaData patch by Aleksey Yeschenko; reviewed by Robert Stupp for CASSANDRA-9712 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/b31845c4 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/b31845c4 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/b31845c4 Branch: refs/heads/trunk Commit: b31845c4a7982358a7c5bfd9bcf572fda6c1bfa9 Parents: 6932bd8 Author: Aleksey Yeschenko Authored: Sat Jul 18 01:59:00 2015 +0300 Committer: Aleksey Yeschenko Committed: Tue Aug 4 12:12:34 2015 +0300 -- NEWS.txt| 8 +- .../apache/cassandra/cache/CachingOptions.java | 291 -- .../org/apache/cassandra/config/CFMetaData.java | 540 + src/java/org/apache/cassandra/cql3/Cql.g| 12 +- .../AlterMaterializedViewStatement.java | 16 +- .../cql3/statements/AlterTableStatement.java| 19 +- .../cassandra/cql3/statements/CFPropDefs.java | 222 --- .../cassandra/cql3/statements/CFProperties.java | 4 +- .../cql3/statements/CreateTableStatement.java | 56 +- .../cql3/statements/KeyspaceAttributes.java | 36 +- .../cql3/statements/TableAttributes.java| 153 + .../apache/cassandra/db/ColumnFamilyStore.java | 71 +-- .../cassandra/db/HintedHandOffManager.java | 2 +- .../org/apache/cassandra/db/LivenessInfo.java | 2 +- src/java/org/apache/cassandra/db/Memtable.java | 2 +- .../apache/cassandra/db/RowUpdateBuilder.java | 2 +- .../db/SinglePartitionReadCommand.java | 4 +- .../org/apache/cassandra/db/SystemKeyspace.java | 21 +- .../cassandra/db/commitlog/CommitLog.java | 4 +- .../db/commitlog/CommitLogArchiver.java | 5 +- .../db/commitlog/CommitLogReplayer.java | 4 +- .../db/compaction/CompactionManager.java| 4 +- .../compaction/CompactionStrategyManager.java | 36 +- .../DateTieredCompactionStrategy.java | 12 +- .../cassandra/db/compaction/Scrubber.java | 2 +- .../SizeTieredCompactionStrategy.java | 14 +- .../cassandra/db/compaction/Upgrader.java | 2 +- .../apache/cassandra/db/rows/BufferCell.java| 4 +- .../cassandra/db/view/MaterializedView.java | 5 +- .../dht/OrderPreservingPartitioner.java | 2 +- .../apache/cassandra/hadoop/ConfigHelper.java | 6 +- .../io/compress/CompressedSequentialWriter.java | 4 +- .../io/compress/CompressionMetadata.java| 15 +- .../io/compress/CompressionParameters.java | 564 -- .../cassandra/io/compress/LZ4Compressor.java| 3 +- .../io/sstable/IndexSummaryManager.java | 4 +- .../io/sstable/format/SSTableReader.java| 26 +- .../io/sstable/format/SSTableWriter.java| 6 +- .../io/sstable/format/big/BigTableWriter.java | 6 +- .../cassandra/io/util/SequentialWriter.java | 4 +- .../apache/cassandra/schema/CachingParams.java | 196 +++ .../cassandra/schema/CompactionParams.java | 304 ++ .../cassandra/schema/CompressionParams.java | 579 +++ .../apache/cassandra/schema/KeyspaceParams.java | 95 +-- .../cassandra/schema/LegacySchemaMigrator.java | 122 ++-- .../cassandra/schema/ReplicationParams.java | 106 .../apache/cassandra/schema/SchemaKeyspace.java | 142 ++--- .../cassandra/schema/SpeculativeRetryParam.java | 160 + .../apache/cassandra/schema/TableParams.java| 338 +++ .../cassandra/service/AbstractReadExecutor.java | 9 +- .../apache/cassandra/service/CacheService.java | 2 +- .../cassandra/service/StorageService.java | 2 +- .../streaming/compress/CompressionInfo.java | 12 +- .../cassandra/thrift/CassandraServer.java | 7 +- .../cassandra/thrift/ThriftConversion.java | 181 -- .../org/apache/cassandra/utils/FBUtilities.java | 8 +- .../utils/NativeSSTableLoaderClient.java| 2 +- .../db/compaction/LongCompactionsTest.java | 10 +- .../LongLeveledCompactionStrategyTest.java | 4 +- test/unit/org/apache/cassandra/MockSchema.java | 4 +- .../unit/org/apache/cassandra/SchemaLoader.java | 50 +- .../apache/cassandra/config/CFMetaDataTest.java | 4 +- .../validation/entities/SecondaryIndexTest.java | 2 +- .../miscellaneous/CrcCheckChanceTest.java | 12 +- .../validation/miscellaneous/OverflowTest.java | 8 +- .../cql3/validation/operations/AlterTest.java | 14 +- .../SelectOrderedPartitionerTest.java | 2 +- .../apache/cassandra/db/HintedHandOffTest.java | 2 - .../apache/cassandra/db/RangeTombstoneTest.java | 5 - .../apache/cassandra/db/RowCacheCQLTest.java| 2 +- .../org/apache/cassandra/db/RowCacheTest.java | 7 +- .../unit/org/apache/cassandra/db/ScrubTest.java | 2 +- .../org/apache/cassandra/db
[1/6] cassandra git commit: Factor out TableParams from CFMetaData
Repository: cassandra Updated Branches: refs/heads/trunk 7d2a96ef6 -> becee6ae4 http://git-wip-us.apache.org/repos/asf/cassandra/blob/b31845c4/test/unit/org/apache/cassandra/io/sstable/IndexSummaryManagerTest.java -- diff --git a/test/unit/org/apache/cassandra/io/sstable/IndexSummaryManagerTest.java b/test/unit/org/apache/cassandra/io/sstable/IndexSummaryManagerTest.java index 5f11f51..5493edb 100644 --- a/test/unit/org/apache/cassandra/io/sstable/IndexSummaryManagerTest.java +++ b/test/unit/org/apache/cassandra/io/sstable/IndexSummaryManagerTest.java @@ -39,7 +39,6 @@ import org.slf4j.LoggerFactory; import org.apache.cassandra.OrderedJUnit4ClassRunner; import org.apache.cassandra.SchemaLoader; import org.apache.cassandra.Util; -import org.apache.cassandra.cache.CachingOptions; import org.apache.cassandra.db.ColumnFamilyStore; import org.apache.cassandra.db.Keyspace; import org.apache.cassandra.db.RowUpdateBuilder; @@ -49,6 +48,7 @@ import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.io.sstable.format.SSTableReader; import org.apache.cassandra.db.lifecycle.LifecycleTransaction; import org.apache.cassandra.metrics.RestorableMeter; +import org.apache.cassandra.schema.CachingParams; import org.apache.cassandra.schema.KeyspaceParams; import org.apache.cassandra.utils.ByteBufferUtil; @@ -87,12 +87,11 @@ public class IndexSummaryManagerTest SchemaLoader.standardCFMD(KEYSPACE1, CF_STANDARDLOWiINTERVAL) .minIndexInterval(8) .maxIndexInterval(256) -.caching(CachingOptions.NONE), + .caching(CachingParams.CACHE_NOTHING), SchemaLoader.standardCFMD(KEYSPACE1, CF_STANDARDRACE) .minIndexInterval(8) .maxIndexInterval(256) -.caching(CachingOptions.NONE) -); + .caching(CachingParams.CACHE_NOTHING)); } @Before @@ -102,8 +101,8 @@ public class IndexSummaryManagerTest String cfname = CF_STANDARDLOWiINTERVAL; // index interval of 8, no key caching Keyspace keyspace = Keyspace.open(ksname); ColumnFamilyStore cfs = keyspace.getColumnFamilyStore(cfname); -originalMinIndexInterval = cfs.metadata.getMinIndexInterval(); -originalMaxIndexInterval = cfs.metadata.getMaxIndexInterval(); +originalMinIndexInterval = cfs.metadata.params.minIndexInterval; +originalMaxIndexInterval = cfs.metadata.params.maxIndexInterval; originalCapacity = IndexSummaryManager.instance.getMemoryPoolCapacityInMB(); } @@ -215,15 +214,15 @@ public class IndexSummaryManagerTest sstable.overrideReadMeter(new RestorableMeter(100.0, 100.0)); for (SSTableReader sstable : sstables) -assertEquals(cfs.metadata.getMinIndexInterval(), sstable.getEffectiveIndexInterval(), 0.001); +assertEquals(cfs.metadata.params.minIndexInterval, sstable.getEffectiveIndexInterval(), 0.001); // double the min_index_interval cfs.metadata.minIndexInterval(originalMinIndexInterval * 2); IndexSummaryManager.instance.redistributeSummaries(); for (SSTableReader sstable : cfs.getLiveSSTables()) { -assertEquals(cfs.metadata.getMinIndexInterval(), sstable.getEffectiveIndexInterval(), 0.001); -assertEquals(numRows / cfs.metadata.getMinIndexInterval(), sstable.getIndexSummarySize()); +assertEquals(cfs.metadata.params.minIndexInterval, sstable.getEffectiveIndexInterval(), 0.001); +assertEquals(numRows / cfs.metadata.params.minIndexInterval, sstable.getIndexSummarySize()); } // return min_index_interval to its original value @@ -231,8 +230,8 @@ public class IndexSummaryManagerTest IndexSummaryManager.instance.redistributeSummaries(); for (SSTableReader sstable : cfs.getLiveSSTables()) { -assertEquals(cfs.metadata.getMinIndexInterval(), sstable.getEffectiveIndexInterval(), 0.001); -assertEquals(numRows / cfs.metadata.getMinIndexInterval(), sstable.getIndexSummarySize()); +assertEquals(cfs.metadata.params.minIndexInterval, sstable.getEffectiveIndexInterval(), 0.001); +assertEquals(numRows / cfs.metadata.params.minIndexInterval, sstable.getIndexSummarySize()); } // halve the min_index_interval, but constrain the available space to exactly what we have now; as a result, @@ -281,7 +280,7 @@ public class IndexSummaryManagerTest redistributeSummaries(Collectio
[3/6] cassandra git commit: Factor out TableParams from CFMetaData
http://git-wip-us.apache.org/repos/asf/cassandra/blob/b31845c4/src/java/org/apache/cassandra/schema/CachingParams.java -- diff --git a/src/java/org/apache/cassandra/schema/CachingParams.java b/src/java/org/apache/cassandra/schema/CachingParams.java new file mode 100644 index 000..2b5ab7c --- /dev/null +++ b/src/java/org/apache/cassandra/schema/CachingParams.java @@ -0,0 +1,196 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.schema; + +import java.util.HashMap; +import java.util.Map; + +import com.google.common.base.Objects; +import com.google.common.collect.ImmutableMap; +import org.apache.commons.lang3.StringUtils; + +import org.apache.cassandra.exceptions.ConfigurationException; + +import static java.lang.String.format; + +// CQL: {'keys' : 'ALL'|'NONE', 'rows_per_partition': '200'|'NONE'|'ALL'} +public final class CachingParams +{ +public enum Option +{ +KEYS, +ROWS_PER_PARTITION; + +@Override +public String toString() +{ +return name().toLowerCase(); +} +} + +private static final String ALL = "ALL"; +private static final String NONE = "NONE"; + +static final boolean DEFAULT_CACHE_KEYS = true; +static final int DEFAULT_ROWS_PER_PARTITION_TO_CACHE = 0; + +public static final CachingParams CACHE_NOTHING = new CachingParams(false, 0); +public static final CachingParams CACHE_KEYS = new CachingParams(true, 0); +public static final CachingParams CACHE_EVERYTHING = new CachingParams(true, Integer.MAX_VALUE); + +static final CachingParams DEFAULT = new CachingParams(DEFAULT_CACHE_KEYS, DEFAULT_ROWS_PER_PARTITION_TO_CACHE); + +final boolean cacheKeys; +final int rowsPerPartitionToCache; + +public CachingParams(boolean cacheKeys, int rowsPerPartitionToCache) +{ +this.cacheKeys = cacheKeys; +this.rowsPerPartitionToCache = rowsPerPartitionToCache; +} + +public boolean cacheKeys() +{ +return cacheKeys; +} + +public boolean cacheRows() +{ +return rowsPerPartitionToCache > 0; +} + +public boolean cacheAllRows() +{ +return rowsPerPartitionToCache == Integer.MAX_VALUE; +} + +public int rowsPerPartitionToCache() +{ +return rowsPerPartitionToCache; +} + +public static CachingParams fromMap(Map map) +{ +Map copy = new HashMap<>(map); + +String keys = copy.remove(Option.KEYS.toString()); +boolean cacheKeys = keys != null && keysFromString(keys); + +String rows = copy.remove(Option.ROWS_PER_PARTITION.toString()); +int rowsPerPartitionToCache = rows == null +? 0 +: rowsPerPartitionFromString(rows); + +if (!copy.isEmpty()) +{ +throw new ConfigurationException(format("Invalid caching sub-options %s: only '%s' and '%s' are allowed", +copy.keySet(), +Option.KEYS, + Option.ROWS_PER_PARTITION)); +} + +return new CachingParams(cacheKeys, rowsPerPartitionToCache); +} + +public Map asMap() +{ +return ImmutableMap.of(Option.KEYS.toString(), + keysAsString(), + Option.ROWS_PER_PARTITION.toString(), + rowsPerPartitionAsString()); +} + +private static boolean keysFromString(String value) +{ +if (value.equalsIgnoreCase(ALL)) +return true; + +if (value.equalsIgnoreCase(NONE)) +return false; + +throw new ConfigurationException(format("Invalid value '%s' for caching sub-option '%s': only '%s' and '%s' are allowed", +value, +Option.KEYS, +ALL, +NONE)); +} + +String keysAsString() +
[4/6] cassandra git commit: Factor out TableParams from CFMetaData
http://git-wip-us.apache.org/repos/asf/cassandra/blob/b31845c4/src/java/org/apache/cassandra/db/ColumnFamilyStore.java -- diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java index c4377d6..d77cf1f 100644 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@ -34,19 +34,13 @@ import com.google.common.base.*; import com.google.common.base.Throwables; import com.google.common.collect.*; import com.google.common.util.concurrent.*; - -import org.apache.cassandra.db.lifecycle.*; -import org.apache.cassandra.io.FSWriteError; -import org.apache.cassandra.metrics.TableMetrics; -import org.json.simple.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.clearspring.analytics.stream.Counter; import org.apache.cassandra.cache.*; import org.apache.cassandra.concurrent.*; import org.apache.cassandra.config.*; -import org.apache.cassandra.config.CFMetaData.SpeculativeRetry; -import org.apache.cassandra.db.rows.*; import org.apache.cassandra.db.commitlog.CommitLog; import org.apache.cassandra.db.commitlog.ReplayPosition; import org.apache.cassandra.db.compaction.*; @@ -54,24 +48,28 @@ import org.apache.cassandra.db.filter.*; import org.apache.cassandra.db.index.SecondaryIndex; import org.apache.cassandra.db.index.SecondaryIndexManager; import org.apache.cassandra.db.view.MaterializedViewManager; +import org.apache.cassandra.db.lifecycle.*; import org.apache.cassandra.db.partitions.*; +import org.apache.cassandra.db.rows.*; import org.apache.cassandra.dht.*; import org.apache.cassandra.dht.Range; import org.apache.cassandra.exceptions.ConfigurationException; -import org.apache.cassandra.io.compress.CompressionParameters; -import org.apache.cassandra.io.sstable.Descriptor; +import org.apache.cassandra.io.FSWriteError; import org.apache.cassandra.io.sstable.*; +import org.apache.cassandra.io.sstable.Descriptor; import org.apache.cassandra.io.sstable.format.*; import org.apache.cassandra.io.util.FileUtils; import org.apache.cassandra.metrics.TableMetrics.Sampler; +import org.apache.cassandra.metrics.TableMetrics; +import org.apache.cassandra.schema.*; import org.apache.cassandra.service.CacheService; import org.apache.cassandra.service.StorageService; import org.apache.cassandra.utils.*; -import org.apache.cassandra.utils.concurrent.*; import org.apache.cassandra.utils.TopKSampler.SamplerResult; +import org.apache.cassandra.utils.concurrent.*; import org.apache.cassandra.utils.memory.MemtableAllocator; +import org.json.simple.*; -import com.clearspring.analytics.stream.Counter; import static org.apache.cassandra.utils.Throwables.maybeFail; @@ -185,10 +183,10 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean // only update these runtime-modifiable settings if they have not been modified. if (!minCompactionThreshold.isModified()) for (ColumnFamilyStore cfs : concatWithIndexes()) -cfs.minCompactionThreshold = new DefaultInteger(metadata.getMinCompactionThreshold()); +cfs.minCompactionThreshold = new DefaultInteger(metadata.params.compaction.minCompactionThreshold()); if (!maxCompactionThreshold.isModified()) for (ColumnFamilyStore cfs : concatWithIndexes()) -cfs.maxCompactionThreshold = new DefaultInteger(metadata.getMaxCompactionThreshold()); +cfs.maxCompactionThreshold = new DefaultInteger(metadata.params.compaction.maxCompactionThreshold()); compactionStrategyManager.maybeReload(metadata); @@ -205,7 +203,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean void scheduleFlush() { -int period = metadata.getMemtableFlushPeriod(); +int period = metadata.params.memtableFlushPeriodInMs; if (period > 0) { logger.debug("scheduling flush in {} ms", period); @@ -252,33 +250,25 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean public void setCompactionStrategyClass(String compactionStrategyClass) { -try -{ -metadata.compactionStrategyClass = CFMetaData.createCompactionStrategy(compactionStrategyClass); -compactionStrategyManager.maybeReload(metadata); -} -catch (ConfigurationException e) -{ -throw new IllegalArgumentException(e.getMessage()); -} +throw new UnsupportedOperationException("ColumnFamilyStore.setCompactionStrategyClass() method is no longer supported"); } public String getCompactionStrategyClass() { -return metadata.compactionStrategyClass.getName(); +return metadata.params.compaction.klass().getName(); } public Map getCompressionParameters() { -return
cassandra git commit: CASSANDRA-9712 follow-up: fix re-enabling compaction via CQL
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 b31845c4a -> be0eebd20 CASSANDRA-9712 follow-up: fix re-enabling compaction via CQL Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/be0eebd2 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/be0eebd2 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/be0eebd2 Branch: refs/heads/cassandra-3.0 Commit: be0eebd20b6edf5c4de5d0e43132ead5b2bd0f4b Parents: b31845c Author: Aleksey Yeschenko Authored: Tue Aug 4 15:56:08 2015 +0300 Committer: Aleksey Yeschenko Committed: Tue Aug 4 15:56:08 2015 +0300 -- .../cassandra/db/compaction/CompactionStrategyManager.java | 8 ++-- 1 file changed, 6 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/be0eebd2/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java -- diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java index d1b004d..e5aff5d 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java @@ -34,6 +34,7 @@ import org.apache.cassandra.dht.Token; import org.apache.cassandra.io.sstable.format.SSTableReader; import org.apache.cassandra.io.sstable.ISSTableScanner; import org.apache.cassandra.notifications.*; +import org.apache.cassandra.schema.CompactionParams; /** * Manages the compaction strategies. @@ -49,6 +50,7 @@ public class CompactionStrategyManager implements INotificationConsumer private volatile AbstractCompactionStrategy unrepaired; private volatile boolean enabled = true; public boolean isActive = true; +private volatile CompactionParams params; public CompactionStrategyManager(ColumnFamilyStore cfs) { @@ -56,7 +58,8 @@ public class CompactionStrategyManager implements INotificationConsumer logger.debug("{} subscribed to the data tracker.", this); this.cfs = cfs; reload(cfs.metadata); -enabled = cfs.metadata.params.compaction.isEnabled(); +params = cfs.metadata.params.compaction; +enabled = params.isEnabled(); } /** @@ -167,6 +170,7 @@ public class CompactionStrategyManager implements INotificationConsumer unrepaired.shutdown(); repaired = metadata.createCompactionStrategyInstance(cfs); unrepaired = metadata.createCompactionStrategyInstance(cfs); +params = metadata.params.compaction; if (disabledWithJMX || !shouldBeEnabled()) disable(); else @@ -426,7 +430,7 @@ public class CompactionStrategyManager implements INotificationConsumer public boolean shouldBeEnabled() { -return cfs.metadata.params.compaction.isEnabled(); +return params.isEnabled(); } public String getName()
[1/2] cassandra git commit: CASSANDRA-9712 follow-up: fix re-enabling compaction via CQL
Repository: cassandra Updated Branches: refs/heads/trunk becee6ae4 -> 55a9b1b7f CASSANDRA-9712 follow-up: fix re-enabling compaction via CQL Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/be0eebd2 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/be0eebd2 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/be0eebd2 Branch: refs/heads/trunk Commit: be0eebd20b6edf5c4de5d0e43132ead5b2bd0f4b Parents: b31845c Author: Aleksey Yeschenko Authored: Tue Aug 4 15:56:08 2015 +0300 Committer: Aleksey Yeschenko Committed: Tue Aug 4 15:56:08 2015 +0300 -- .../cassandra/db/compaction/CompactionStrategyManager.java | 8 ++-- 1 file changed, 6 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/be0eebd2/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java -- diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java index d1b004d..e5aff5d 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java @@ -34,6 +34,7 @@ import org.apache.cassandra.dht.Token; import org.apache.cassandra.io.sstable.format.SSTableReader; import org.apache.cassandra.io.sstable.ISSTableScanner; import org.apache.cassandra.notifications.*; +import org.apache.cassandra.schema.CompactionParams; /** * Manages the compaction strategies. @@ -49,6 +50,7 @@ public class CompactionStrategyManager implements INotificationConsumer private volatile AbstractCompactionStrategy unrepaired; private volatile boolean enabled = true; public boolean isActive = true; +private volatile CompactionParams params; public CompactionStrategyManager(ColumnFamilyStore cfs) { @@ -56,7 +58,8 @@ public class CompactionStrategyManager implements INotificationConsumer logger.debug("{} subscribed to the data tracker.", this); this.cfs = cfs; reload(cfs.metadata); -enabled = cfs.metadata.params.compaction.isEnabled(); +params = cfs.metadata.params.compaction; +enabled = params.isEnabled(); } /** @@ -167,6 +170,7 @@ public class CompactionStrategyManager implements INotificationConsumer unrepaired.shutdown(); repaired = metadata.createCompactionStrategyInstance(cfs); unrepaired = metadata.createCompactionStrategyInstance(cfs); +params = metadata.params.compaction; if (disabledWithJMX || !shouldBeEnabled()) disable(); else @@ -426,7 +430,7 @@ public class CompactionStrategyManager implements INotificationConsumer public boolean shouldBeEnabled() { -return cfs.metadata.params.compaction.isEnabled(); +return params.isEnabled(); } public String getName()
[2/2] cassandra git commit: Merge branch 'cassandra-3.0' into trunk
Merge branch 'cassandra-3.0' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/55a9b1b7 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/55a9b1b7 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/55a9b1b7 Branch: refs/heads/trunk Commit: 55a9b1b7fb17f176201b2990346f871d968598aa Parents: becee6a be0eebd Author: Aleksey Yeschenko Authored: Tue Aug 4 15:56:43 2015 +0300 Committer: Aleksey Yeschenko Committed: Tue Aug 4 15:56:43 2015 +0300 -- .../cassandra/db/compaction/CompactionStrategyManager.java | 8 ++-- 1 file changed, 6 insertions(+), 2 deletions(-) --
[2/2] cassandra git commit: Merge branch 'cassandra-3.0' into trunk
Merge branch 'cassandra-3.0' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/630220a2 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/630220a2 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/630220a2 Branch: refs/heads/trunk Commit: 630220a2a303a391ad7ce4e74541d1029e1f968f Parents: 55a9b1b 64e93a7 Author: Aleksey Yeschenko Authored: Tue Aug 4 16:28:13 2015 +0300 Committer: Aleksey Yeschenko Committed: Tue Aug 4 16:28:13 2015 +0300 -- .../apache/cassandra/db/ColumnFamilyStore.java | 6 ++ .../apache/cassandra/db/lifecycle/Helpers.java | 14 ++ .../db/lifecycle/LifecycleTransaction.java | 2 +- .../apache/cassandra/db/lifecycle/Tracker.java | 4 ++-- .../cassandra/io/sstable/SSTableRewriter.java| 2 +- .../io/sstable/format/SSTableReader.java | 19 +++ 6 files changed, 19 insertions(+), 28 deletions(-) --
[1/2] cassandra git commit: Fix remaining dtest failures caused by CASSANDRA-8143
Repository: cassandra Updated Branches: refs/heads/trunk 55a9b1b7f -> 630220a2a Fix remaining dtest failures caused by CASSANDRA-8143 patch by Branimir Lambov; reviewed by Aleksey Yeschenko for CASSANDRA-8143 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/64e93a76 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/64e93a76 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/64e93a76 Branch: refs/heads/trunk Commit: 64e93a76d8065e2cadeffbc04d28c995dcc9bc0c Parents: be0eebd Author: Branimir Lambov Authored: Tue Aug 4 16:26:18 2015 +0300 Committer: Aleksey Yeschenko Committed: Tue Aug 4 16:26:18 2015 +0300 -- .../apache/cassandra/db/ColumnFamilyStore.java | 6 ++ .../apache/cassandra/db/lifecycle/Helpers.java | 14 ++ .../db/lifecycle/LifecycleTransaction.java | 2 +- .../apache/cassandra/db/lifecycle/Tracker.java | 4 ++-- .../cassandra/io/sstable/SSTableRewriter.java| 2 +- .../io/sstable/format/SSTableReader.java | 19 +++ 6 files changed, 19 insertions(+), 28 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/64e93a76/src/java/org/apache/cassandra/db/ColumnFamilyStore.java -- diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java index d77cf1f..1f3c7db 100644 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@ -276,14 +276,12 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean } } +// FIXME: this is wrong, JMX should never update live CFMetaData objects public void setCrcCheckChance(double crcCheckChance) { try { -// TODO: this doesn't affect sstables being written -for (SSTableReader sstable : keyspace.getAllSSTables(SSTableSet.CANONICAL)) -if (sstable.compression) - sstable.getCompressionMetadata().parameters.setCrcCheckChance(crcCheckChance); +metadata.params.compression.setCrcCheckChance(crcCheckChance); } catch (ConfigurationException e) { http://git-wip-us.apache.org/repos/asf/cassandra/blob/64e93a76/src/java/org/apache/cassandra/db/lifecycle/Helpers.java -- diff --git a/src/java/org/apache/cassandra/db/lifecycle/Helpers.java b/src/java/org/apache/cassandra/db/lifecycle/Helpers.java index 2b94d7a..8cb92b9 100644 --- a/src/java/org/apache/cassandra/db/lifecycle/Helpers.java +++ b/src/java/org/apache/cassandra/db/lifecycle/Helpers.java @@ -71,10 +71,10 @@ class Helpers * A convenience method for encapsulating this action over multiple SSTableReader with exception-safety * @return accumulate if not null (with any thrown exception attached), or any thrown exception otherwise */ -static void setupKeyCache(Iterable readers) +static void setupOnline(Iterable readers) { for (SSTableReader reader : readers) -reader.setupKeyCache(); +reader.setupOnline(); } /** @@ -98,16 +98,6 @@ class Helpers } /** - * A convenience method for encapsulating this action over multiple SSTableReader with exception-safety - * @return accumulate if not null (with any thrown exception attached), or any thrown exception otherwise - */ -static void setupKeycache(Iterable readers) -{ -for (SSTableReader reader : readers) -reader.setupKeyCache(); -} - -/** * assert that none of these readers have been replaced */ static void checkNotReplaced(Iterable readers) http://git-wip-us.apache.org/repos/asf/cassandra/blob/64e93a76/src/java/org/apache/cassandra/db/lifecycle/LifecycleTransaction.java -- diff --git a/src/java/org/apache/cassandra/db/lifecycle/LifecycleTransaction.java b/src/java/org/apache/cassandra/db/lifecycle/LifecycleTransaction.java index edfd795..5d6d9f9 100644 --- a/src/java/org/apache/cassandra/db/lifecycle/LifecycleTransaction.java +++ b/src/java/org/apache/cassandra/db/lifecycle/LifecycleTransaction.java @@ -350,7 +350,7 @@ public class LifecycleTransaction extends Transactional.AbstractTransactional staged.update.add(reader); identities.add(reader.instanceId); if (!isOffline()) -reader.setupKeyCache(); +reader.setupOnline(); } /** http://git-wip-us.apache.org/repos/asf/cassandra/blob/64e93a76/src/java/org/apache/cassandra/db/lifecycle/Trac
cassandra git commit: Fix remaining dtest failures caused by CASSANDRA-8143
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 be0eebd20 -> 64e93a76d Fix remaining dtest failures caused by CASSANDRA-8143 patch by Branimir Lambov; reviewed by Aleksey Yeschenko for CASSANDRA-8143 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/64e93a76 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/64e93a76 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/64e93a76 Branch: refs/heads/cassandra-3.0 Commit: 64e93a76d8065e2cadeffbc04d28c995dcc9bc0c Parents: be0eebd Author: Branimir Lambov Authored: Tue Aug 4 16:26:18 2015 +0300 Committer: Aleksey Yeschenko Committed: Tue Aug 4 16:26:18 2015 +0300 -- .../apache/cassandra/db/ColumnFamilyStore.java | 6 ++ .../apache/cassandra/db/lifecycle/Helpers.java | 14 ++ .../db/lifecycle/LifecycleTransaction.java | 2 +- .../apache/cassandra/db/lifecycle/Tracker.java | 4 ++-- .../cassandra/io/sstable/SSTableRewriter.java| 2 +- .../io/sstable/format/SSTableReader.java | 19 +++ 6 files changed, 19 insertions(+), 28 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/64e93a76/src/java/org/apache/cassandra/db/ColumnFamilyStore.java -- diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java index d77cf1f..1f3c7db 100644 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@ -276,14 +276,12 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean } } +// FIXME: this is wrong, JMX should never update live CFMetaData objects public void setCrcCheckChance(double crcCheckChance) { try { -// TODO: this doesn't affect sstables being written -for (SSTableReader sstable : keyspace.getAllSSTables(SSTableSet.CANONICAL)) -if (sstable.compression) - sstable.getCompressionMetadata().parameters.setCrcCheckChance(crcCheckChance); +metadata.params.compression.setCrcCheckChance(crcCheckChance); } catch (ConfigurationException e) { http://git-wip-us.apache.org/repos/asf/cassandra/blob/64e93a76/src/java/org/apache/cassandra/db/lifecycle/Helpers.java -- diff --git a/src/java/org/apache/cassandra/db/lifecycle/Helpers.java b/src/java/org/apache/cassandra/db/lifecycle/Helpers.java index 2b94d7a..8cb92b9 100644 --- a/src/java/org/apache/cassandra/db/lifecycle/Helpers.java +++ b/src/java/org/apache/cassandra/db/lifecycle/Helpers.java @@ -71,10 +71,10 @@ class Helpers * A convenience method for encapsulating this action over multiple SSTableReader with exception-safety * @return accumulate if not null (with any thrown exception attached), or any thrown exception otherwise */ -static void setupKeyCache(Iterable readers) +static void setupOnline(Iterable readers) { for (SSTableReader reader : readers) -reader.setupKeyCache(); +reader.setupOnline(); } /** @@ -98,16 +98,6 @@ class Helpers } /** - * A convenience method for encapsulating this action over multiple SSTableReader with exception-safety - * @return accumulate if not null (with any thrown exception attached), or any thrown exception otherwise - */ -static void setupKeycache(Iterable readers) -{ -for (SSTableReader reader : readers) -reader.setupKeyCache(); -} - -/** * assert that none of these readers have been replaced */ static void checkNotReplaced(Iterable readers) http://git-wip-us.apache.org/repos/asf/cassandra/blob/64e93a76/src/java/org/apache/cassandra/db/lifecycle/LifecycleTransaction.java -- diff --git a/src/java/org/apache/cassandra/db/lifecycle/LifecycleTransaction.java b/src/java/org/apache/cassandra/db/lifecycle/LifecycleTransaction.java index edfd795..5d6d9f9 100644 --- a/src/java/org/apache/cassandra/db/lifecycle/LifecycleTransaction.java +++ b/src/java/org/apache/cassandra/db/lifecycle/LifecycleTransaction.java @@ -350,7 +350,7 @@ public class LifecycleTransaction extends Transactional.AbstractTransactional staged.update.add(reader); identities.add(reader.instanceId); if (!isOffline()) -reader.setupKeyCache(); +reader.setupOnline(); } /** http://git-wip-us.apache.org/repos/asf/cassandra/blob/64e93a76/src/java/org/apache/cassandra/db/lifecycle/Trac
[1/2] cassandra git commit: Fix cqlsh DESCRIBE column order
Repository: cassandra Updated Branches: refs/heads/trunk 630220a2a -> 3ab86d043 Fix cqlsh DESCRIBE column order patch by Adam Holmberg; reviewed by Aleksey Yeschenko for CASSANDRA-9968 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/e58b7df9 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/e58b7df9 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/e58b7df9 Branch: refs/heads/trunk Commit: e58b7df935cfd1f12560fb174eebda2ff529f9e8 Parents: 64e93a7 Author: Adam Holmberg Authored: Tue Aug 4 16:39:51 2015 +0300 Committer: Aleksey Yeschenko Committed: Tue Aug 4 16:39:51 2015 +0300 -- lib/cassandra-driver-internal-only-2.6.0c2.zip| Bin 194427 -> 0 bytes ...river-internal-only-2.6.0rc2.post0-1a480f1.zip | Bin 0 -> 200621 bytes 2 files changed, 0 insertions(+), 0 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/e58b7df9/lib/cassandra-driver-internal-only-2.6.0c2.zip -- diff --git a/lib/cassandra-driver-internal-only-2.6.0c2.zip b/lib/cassandra-driver-internal-only-2.6.0c2.zip deleted file mode 100644 index ce91907..000 Binary files a/lib/cassandra-driver-internal-only-2.6.0c2.zip and /dev/null differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/e58b7df9/lib/cassandra-driver-internal-only-2.6.0rc2.post0-1a480f1.zip -- diff --git a/lib/cassandra-driver-internal-only-2.6.0rc2.post0-1a480f1.zip b/lib/cassandra-driver-internal-only-2.6.0rc2.post0-1a480f1.zip new file mode 100644 index 000..a611501 Binary files /dev/null and b/lib/cassandra-driver-internal-only-2.6.0rc2.post0-1a480f1.zip differ
[2/2] cassandra git commit: Merge branch 'cassandra-3.0' into trunk
Merge branch 'cassandra-3.0' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/3ab86d04 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3ab86d04 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3ab86d04 Branch: refs/heads/trunk Commit: 3ab86d0431e24faee96acabddbae63d03d4de274 Parents: 630220a e58b7df Author: Aleksey Yeschenko Authored: Tue Aug 4 16:41:20 2015 +0300 Committer: Aleksey Yeschenko Committed: Tue Aug 4 16:41:20 2015 +0300 -- lib/cassandra-driver-internal-only-2.6.0c2.zip| Bin 194427 -> 0 bytes ...river-internal-only-2.6.0rc2.post0-1a480f1.zip | Bin 0 -> 200621 bytes 2 files changed, 0 insertions(+), 0 deletions(-) --
cassandra git commit: Fix cqlsh DESCRIBE column order
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 64e93a76d -> e58b7df93 Fix cqlsh DESCRIBE column order patch by Adam Holmberg; reviewed by Aleksey Yeschenko for CASSANDRA-9968 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/e58b7df9 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/e58b7df9 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/e58b7df9 Branch: refs/heads/cassandra-3.0 Commit: e58b7df935cfd1f12560fb174eebda2ff529f9e8 Parents: 64e93a7 Author: Adam Holmberg Authored: Tue Aug 4 16:39:51 2015 +0300 Committer: Aleksey Yeschenko Committed: Tue Aug 4 16:39:51 2015 +0300 -- lib/cassandra-driver-internal-only-2.6.0c2.zip| Bin 194427 -> 0 bytes ...river-internal-only-2.6.0rc2.post0-1a480f1.zip | Bin 0 -> 200621 bytes 2 files changed, 0 insertions(+), 0 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/e58b7df9/lib/cassandra-driver-internal-only-2.6.0c2.zip -- diff --git a/lib/cassandra-driver-internal-only-2.6.0c2.zip b/lib/cassandra-driver-internal-only-2.6.0c2.zip deleted file mode 100644 index ce91907..000 Binary files a/lib/cassandra-driver-internal-only-2.6.0c2.zip and /dev/null differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/e58b7df9/lib/cassandra-driver-internal-only-2.6.0rc2.post0-1a480f1.zip -- diff --git a/lib/cassandra-driver-internal-only-2.6.0rc2.post0-1a480f1.zip b/lib/cassandra-driver-internal-only-2.6.0rc2.post0-1a480f1.zip new file mode 100644 index 000..a611501 Binary files /dev/null and b/lib/cassandra-driver-internal-only-2.6.0rc2.post0-1a480f1.zip differ
cassandra git commit: Optimize batchlog replay to avoid full scans
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 ef5962442 -> 762db4742 Optimize batchlog replay to avoid full scans patch by Branimir Lambov; reviewed by Aleksey Yeschenko for CASSANDRA-7237 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/762db474 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/762db474 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/762db474 Branch: refs/heads/cassandra-3.0 Commit: 762db474273f764b189d3613fce33943cd64701b Parents: ef59624 Author: Branimir Lambov Authored: Sat Aug 1 11:55:47 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Aug 6 17:12:28 2015 +0300 -- CHANGES.txt | 2 + NEWS.txt| 2 + .../apache/cassandra/db/BatchlogManager.java| 226 + .../apache/cassandra/db/ColumnFamilyStore.java | 13 + src/java/org/apache/cassandra/db/Memtable.java | 2 +- .../org/apache/cassandra/db/SystemKeyspace.java | 28 ++- .../apache/cassandra/dht/LocalPartitioner.java | 30 ++- .../apache/cassandra/service/StorageProxy.java | 2 +- .../cassandra/db/BatchlogManagerTest.java | 246 +++ 9 files changed, 395 insertions(+), 156 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/762db474/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 80e0e50..95fade9 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.0-beta1 + * Optimize batchlog replay to avoid full scans (CASSANDRA-7237) * Repair improvements when using vnodes (CASSANDRA-5220) * Disable scripted UDFs by default (CASSANDRA-9889) * Add transparent data encryption core classes (CASSANDRA-9945) @@ -11,6 +12,7 @@ Merged from 2.1: Merged from 2.0: * Don't cast expected bf size to an int (CASSANDRA-9959) + 3.0.0-alpha1 * Implement proper sandboxing for UDFs (CASSANDRA-9402) * Simplify (and unify) cleanup of compaction leftovers (CASSANDRA-7066) http://git-wip-us.apache.org/repos/asf/cassandra/blob/762db474/NEWS.txt -- diff --git a/NEWS.txt b/NEWS.txt index 1fcbb12..ef61f6c 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -58,6 +58,8 @@ Upgrading be done by setting the new option `enabled` to `false`. - Only map syntax is now allowed for caching options. ALL/NONE/KEYS_ONLY/ROWS_ONLY syntax has been deprecated since 2.1.0 and is being removed in 3.0.0. + - Batchlog entries are now stored in a new table - system.batches. + The old one has been deprecated. 2.2 http://git-wip-us.apache.org/repos/asf/cassandra/blob/762db474/src/java/org/apache/cassandra/db/BatchlogManager.java -- diff --git a/src/java/org/apache/cassandra/db/BatchlogManager.java b/src/java/org/apache/cassandra/db/BatchlogManager.java index 9e90d9d..8ea4318 100644 --- a/src/java/org/apache/cassandra/db/BatchlogManager.java +++ b/src/java/org/apache/cassandra/db/BatchlogManager.java @@ -23,30 +23,24 @@ import java.net.InetAddress; import java.nio.ByteBuffer; import java.util.*; import java.util.concurrent.*; -import java.util.concurrent.atomic.AtomicLong; import javax.management.MBeanServer; import javax.management.ObjectName; - import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.*; import com.google.common.util.concurrent.RateLimiter; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; + import org.apache.cassandra.concurrent.DebuggableScheduledThreadPoolExecutor; import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.cql3.UntypedResultSet; import org.apache.cassandra.db.partitions.PartitionUpdate; -import org.apache.cassandra.db.compaction.CompactionManager; -import org.apache.cassandra.db.lifecycle.SSTableSet; import org.apache.cassandra.db.marshal.UUIDType; import org.apache.cassandra.dht.Token; import org.apache.cassandra.exceptions.WriteFailureException; import org.apache.cassandra.exceptions.WriteTimeoutException; import org.apache.cassandra.gms.FailureDetector; -import org.apache.cassandra.io.sstable.Descriptor; -import org.apache.cassandra.io.sstable.format.SSTableReader; import org.apache.cassandra.io.util.DataInputBuffer; import org.apache.cassandra.io.util.DataInputPlus; import org.apache.cassandra.io.util.DataOutputBuffer; @@ -57,20 +51,22 @@ import org.apache.cassandra.service.StorageProxy; import org.apache.cassandra.service.StorageService; import org.apache.cassandra.service.WriteResponseHandler; import org.apache.cassandra.utils.FBUtilities; -import org.apache.cassandra.utils.Wrapped
[2/2] cassandra git commit: Merge branch 'cassandra-3.0' into trunk
Merge branch 'cassandra-3.0' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/c35bfc09 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c35bfc09 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c35bfc09 Branch: refs/heads/trunk Commit: c35bfc09cca4add42afed0733a29d6f6843dbba0 Parents: bf8ac1a 762db47 Author: Aleksey Yeschenko Authored: Thu Aug 6 17:32:39 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Aug 6 17:32:39 2015 +0300 -- CHANGES.txt | 2 + NEWS.txt| 2 + .../apache/cassandra/db/BatchlogManager.java| 226 + .../apache/cassandra/db/ColumnFamilyStore.java | 13 + src/java/org/apache/cassandra/db/Memtable.java | 2 +- .../org/apache/cassandra/db/SystemKeyspace.java | 28 ++- .../apache/cassandra/dht/LocalPartitioner.java | 30 ++- .../apache/cassandra/service/StorageProxy.java | 2 +- .../cassandra/db/BatchlogManagerTest.java | 246 +++ 9 files changed, 395 insertions(+), 156 deletions(-) --
[1/2] cassandra git commit: Optimize batchlog replay to avoid full scans
Repository: cassandra Updated Branches: refs/heads/trunk bf8ac1acd -> c35bfc09c Optimize batchlog replay to avoid full scans patch by Branimir Lambov; reviewed by Aleksey Yeschenko for CASSANDRA-7237 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/762db474 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/762db474 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/762db474 Branch: refs/heads/trunk Commit: 762db474273f764b189d3613fce33943cd64701b Parents: ef59624 Author: Branimir Lambov Authored: Sat Aug 1 11:55:47 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Aug 6 17:12:28 2015 +0300 -- CHANGES.txt | 2 + NEWS.txt| 2 + .../apache/cassandra/db/BatchlogManager.java| 226 + .../apache/cassandra/db/ColumnFamilyStore.java | 13 + src/java/org/apache/cassandra/db/Memtable.java | 2 +- .../org/apache/cassandra/db/SystemKeyspace.java | 28 ++- .../apache/cassandra/dht/LocalPartitioner.java | 30 ++- .../apache/cassandra/service/StorageProxy.java | 2 +- .../cassandra/db/BatchlogManagerTest.java | 246 +++ 9 files changed, 395 insertions(+), 156 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/762db474/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 80e0e50..95fade9 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.0-beta1 + * Optimize batchlog replay to avoid full scans (CASSANDRA-7237) * Repair improvements when using vnodes (CASSANDRA-5220) * Disable scripted UDFs by default (CASSANDRA-9889) * Add transparent data encryption core classes (CASSANDRA-9945) @@ -11,6 +12,7 @@ Merged from 2.1: Merged from 2.0: * Don't cast expected bf size to an int (CASSANDRA-9959) + 3.0.0-alpha1 * Implement proper sandboxing for UDFs (CASSANDRA-9402) * Simplify (and unify) cleanup of compaction leftovers (CASSANDRA-7066) http://git-wip-us.apache.org/repos/asf/cassandra/blob/762db474/NEWS.txt -- diff --git a/NEWS.txt b/NEWS.txt index 1fcbb12..ef61f6c 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -58,6 +58,8 @@ Upgrading be done by setting the new option `enabled` to `false`. - Only map syntax is now allowed for caching options. ALL/NONE/KEYS_ONLY/ROWS_ONLY syntax has been deprecated since 2.1.0 and is being removed in 3.0.0. + - Batchlog entries are now stored in a new table - system.batches. + The old one has been deprecated. 2.2 http://git-wip-us.apache.org/repos/asf/cassandra/blob/762db474/src/java/org/apache/cassandra/db/BatchlogManager.java -- diff --git a/src/java/org/apache/cassandra/db/BatchlogManager.java b/src/java/org/apache/cassandra/db/BatchlogManager.java index 9e90d9d..8ea4318 100644 --- a/src/java/org/apache/cassandra/db/BatchlogManager.java +++ b/src/java/org/apache/cassandra/db/BatchlogManager.java @@ -23,30 +23,24 @@ import java.net.InetAddress; import java.nio.ByteBuffer; import java.util.*; import java.util.concurrent.*; -import java.util.concurrent.atomic.AtomicLong; import javax.management.MBeanServer; import javax.management.ObjectName; - import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.*; import com.google.common.util.concurrent.RateLimiter; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; + import org.apache.cassandra.concurrent.DebuggableScheduledThreadPoolExecutor; import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.cql3.UntypedResultSet; import org.apache.cassandra.db.partitions.PartitionUpdate; -import org.apache.cassandra.db.compaction.CompactionManager; -import org.apache.cassandra.db.lifecycle.SSTableSet; import org.apache.cassandra.db.marshal.UUIDType; import org.apache.cassandra.dht.Token; import org.apache.cassandra.exceptions.WriteFailureException; import org.apache.cassandra.exceptions.WriteTimeoutException; import org.apache.cassandra.gms.FailureDetector; -import org.apache.cassandra.io.sstable.Descriptor; -import org.apache.cassandra.io.sstable.format.SSTableReader; import org.apache.cassandra.io.util.DataInputBuffer; import org.apache.cassandra.io.util.DataInputPlus; import org.apache.cassandra.io.util.DataOutputBuffer; @@ -57,20 +51,22 @@ import org.apache.cassandra.service.StorageProxy; import org.apache.cassandra.service.StorageService; import org.apache.cassandra.service.WriteResponseHandler; import org.apache.cassandra.utils.FBUtilities; -import org.apache.cassandra.utils.WrappedRunnable;
[1/2] cassandra git commit: Fix Verb.BATCHLOG_MUTATION usages in StorageProxy
Repository: cassandra Updated Branches: refs/heads/trunk c35bfc09c -> 414685381 Fix Verb.BATCHLOG_MUTATION usages in StorageProxy patch by Carl Yeksigian; reviewed by Aleksey Yeschenko for CASSANDRA-9992 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/16498de4 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/16498de4 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/16498de4 Branch: refs/heads/trunk Commit: 16498de42d1e173f39d7edeba5ab7d567e609cc6 Parents: 762db47 Author: Carl Yeksigian Authored: Wed Aug 5 11:42:01 2015 -0400 Committer: Aleksey Yeschenko Committed: Thu Aug 6 17:42:45 2015 +0300 -- .../apache/cassandra/service/StorageProxy.java | 24 +++- 1 file changed, 18 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/16498de4/src/java/org/apache/cassandra/service/StorageProxy.java -- diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java b/src/java/org/apache/cassandra/service/StorageProxy.java index b637b17..2c3c018 100644 --- a/src/java/org/apache/cassandra/service/StorageProxy.java +++ b/src/java/org/apache/cassandra/service/StorageProxy.java @@ -837,18 +837,18 @@ public class StorageProxy implements StorageProxyMBean { insertLocal(Stage.BATCHLOG_MUTATION, message.payload, handler); } -else if (targetVersion == MessagingService.current_version) -{ -MessagingService.instance().sendRR(message, target, handler, false); -} -else +else if (targetVersion < MessagingService.VERSION_30) { MessagingService.instance().sendRR(BatchlogManager.getBatchlogMutationFor(mutations, uuid, targetVersion) - .createMessage(MessagingService.Verb.BATCHLOG_MUTATION), + .createMessage(MessagingService.Verb.MUTATION), target, handler, false); } +else +{ +MessagingService.instance().sendRR(message, target, handler, false); +} } handler.get(); @@ -870,10 +870,22 @@ public class StorageProxy implements StorageProxyMBean MessageOut message = mutation.createMessage(MessagingService.Verb.BATCHLOG_MUTATION); for (InetAddress target : endpoints) { +int targetVersion = MessagingService.instance().getVersion(target); if (canDoLocalRequest(target)) +{ insertLocal(Stage.BATCHLOG_MUTATION, message.payload, handler); +} +else if (targetVersion < MessagingService.VERSION_30) +{ + MessagingService.instance().sendRR(mutation.createMessage(MessagingService.Verb.MUTATION), + target, + handler, + false); +} else +{ MessagingService.instance().sendRR(message, target, handler, false); +} } }
[2/2] cassandra git commit: Merge branch 'cassandra-3.0' into trunk
Merge branch 'cassandra-3.0' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/41468538 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/41468538 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/41468538 Branch: refs/heads/trunk Commit: 41468538172c652ab40cc9f9f9e5612c3baa4cbd Parents: c35bfc0 16498de Author: Aleksey Yeschenko Authored: Thu Aug 6 17:44:53 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Aug 6 17:44:53 2015 +0300 -- .../apache/cassandra/service/StorageProxy.java | 24 +++- 1 file changed, 18 insertions(+), 6 deletions(-) --
cassandra git commit: Fix Verb.BATCHLOG_MUTATION usages in StorageProxy
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 762db4742 -> 16498de42 Fix Verb.BATCHLOG_MUTATION usages in StorageProxy patch by Carl Yeksigian; reviewed by Aleksey Yeschenko for CASSANDRA-9992 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/16498de4 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/16498de4 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/16498de4 Branch: refs/heads/cassandra-3.0 Commit: 16498de42d1e173f39d7edeba5ab7d567e609cc6 Parents: 762db47 Author: Carl Yeksigian Authored: Wed Aug 5 11:42:01 2015 -0400 Committer: Aleksey Yeschenko Committed: Thu Aug 6 17:42:45 2015 +0300 -- .../apache/cassandra/service/StorageProxy.java | 24 +++- 1 file changed, 18 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/16498de4/src/java/org/apache/cassandra/service/StorageProxy.java -- diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java b/src/java/org/apache/cassandra/service/StorageProxy.java index b637b17..2c3c018 100644 --- a/src/java/org/apache/cassandra/service/StorageProxy.java +++ b/src/java/org/apache/cassandra/service/StorageProxy.java @@ -837,18 +837,18 @@ public class StorageProxy implements StorageProxyMBean { insertLocal(Stage.BATCHLOG_MUTATION, message.payload, handler); } -else if (targetVersion == MessagingService.current_version) -{ -MessagingService.instance().sendRR(message, target, handler, false); -} -else +else if (targetVersion < MessagingService.VERSION_30) { MessagingService.instance().sendRR(BatchlogManager.getBatchlogMutationFor(mutations, uuid, targetVersion) - .createMessage(MessagingService.Verb.BATCHLOG_MUTATION), + .createMessage(MessagingService.Verb.MUTATION), target, handler, false); } +else +{ +MessagingService.instance().sendRR(message, target, handler, false); +} } handler.get(); @@ -870,10 +870,22 @@ public class StorageProxy implements StorageProxyMBean MessageOut message = mutation.createMessage(MessagingService.Verb.BATCHLOG_MUTATION); for (InetAddress target : endpoints) { +int targetVersion = MessagingService.instance().getVersion(target); if (canDoLocalRequest(target)) +{ insertLocal(Stage.BATCHLOG_MUTATION, message.payload, handler); +} +else if (targetVersion < MessagingService.VERSION_30) +{ + MessagingService.instance().sendRR(mutation.createMessage(MessagingService.Verb.MUTATION), + target, + handler, + false); +} else +{ MessagingService.instance().sendRR(message, target, handler, false); +} } }
[1/2] cassandra git commit: Fixup unsued Verb.MATERIALIZEDVIEW_MUTATION
Repository: cassandra Updated Branches: refs/heads/trunk 414685381 -> 989c3aa82 Fixup unsued Verb.MATERIALIZEDVIEW_MUTATION patch by Aleksey Yeschenko for CASSANDRA-9993 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/39ee0408 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/39ee0408 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/39ee0408 Branch: refs/heads/trunk Commit: 39ee04088cfd2926ed27490267b9f562472f5647 Parents: 16498de Author: Aleksey Yeschenko Authored: Thu Aug 6 18:11:23 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Aug 6 18:11:23 2015 +0300 -- src/java/org/apache/cassandra/config/DatabaseDescriptor.java | 1 - src/java/org/apache/cassandra/net/MessagingService.java | 8 ++-- src/java/org/apache/cassandra/service/StorageService.java| 1 - 3 files changed, 2 insertions(+), 8 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/39ee0408/src/java/org/apache/cassandra/config/DatabaseDescriptor.java -- diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java index 02f3c17..6d6745a 100644 --- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java +++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java @@ -992,7 +992,6 @@ public class DatabaseDescriptor case PAXOS_PREPARE: case PAXOS_PROPOSE: case BATCHLOG_MUTATION: -case MATERIALIZED_VIEW_MUTATION: return getWriteRpcTimeout(); case COUNTER_MUTATION: return getCounterWriteRpcTimeout(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/39ee0408/src/java/org/apache/cassandra/net/MessagingService.java -- diff --git a/src/java/org/apache/cassandra/net/MessagingService.java b/src/java/org/apache/cassandra/net/MessagingService.java index e10b4cb..da475f7 100644 --- a/src/java/org/apache/cassandra/net/MessagingService.java +++ b/src/java/org/apache/cassandra/net/MessagingService.java @@ -135,11 +135,12 @@ public final class MessagingService implements MessagingServiceMBean PAXOS_COMMIT, @Deprecated PAGED_RANGE, BATCHLOG_MUTATION, -MATERIALIZED_VIEW_MUTATION, // remember to add new verbs at the end, since we serialize by ordinal UNUSED_1, UNUSED_2, UNUSED_3, +UNUSED_4, +UNUSED_5, ; } @@ -147,7 +148,6 @@ public final class MessagingService implements MessagingServiceMBean {{ put(Verb.MUTATION, Stage.MUTATION); put(Verb.COUNTER_MUTATION, Stage.COUNTER_MUTATION); -put(Verb.MATERIALIZED_VIEW_MUTATION, Stage.MATERIALIZED_VIEW_MUTATION); put(Verb.BATCHLOG_MUTATION, Stage.BATCHLOG_MUTATION); put(Verb.READ_REPAIR, Stage.MUTATION); put(Verb.TRUNCATE, Stage.MUTATION); @@ -208,7 +208,6 @@ public final class MessagingService implements MessagingServiceMBean put(Verb.MUTATION, Mutation.serializer); put(Verb.BATCHLOG_MUTATION, Mutation.serializer); -put(Verb.MATERIALIZED_VIEW_MUTATION, Mutation.serializer); put(Verb.READ_REPAIR, Mutation.serializer); put(Verb.READ, ReadCommand.serializer); //put(Verb.RANGE_SLICE, ReadCommand.legacyRangeSliceCommandSerializer); @@ -236,7 +235,6 @@ public final class MessagingService implements MessagingServiceMBean {{ put(Verb.MUTATION, WriteResponse.serializer); put(Verb.BATCHLOG_MUTATION, WriteResponse.serializer); -put(Verb.MATERIALIZED_VIEW_MUTATION, WriteResponse.serializer); put(Verb.READ_REPAIR, WriteResponse.serializer); put(Verb.COUNTER_MUTATION, WriteResponse.serializer); put(Verb.RANGE_SLICE, ReadResponse.legacyRangeSliceReplySerializer); @@ -300,7 +298,6 @@ public final class MessagingService implements MessagingServiceMBean public static final EnumSet DROPPABLE_VERBS = EnumSet.of(Verb._TRACE, Verb.MUTATION, Verb.BATCHLOG_MUTATION, //FIXME: should this be droppable?? - Verb.MATERIALIZED_VIEW_MUTATION, Verb.COUNTER_MUTATION, Verb.READ_REPAIR, Verb.READ, @@ -630,7 +627,6 @@ public final class MessagingService impleme
cassandra git commit: Fixup unsued Verb.MATERIALIZEDVIEW_MUTATION
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 16498de42 -> 39ee04088 Fixup unsued Verb.MATERIALIZEDVIEW_MUTATION patch by Aleksey Yeschenko for CASSANDRA-9993 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/39ee0408 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/39ee0408 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/39ee0408 Branch: refs/heads/cassandra-3.0 Commit: 39ee04088cfd2926ed27490267b9f562472f5647 Parents: 16498de Author: Aleksey Yeschenko Authored: Thu Aug 6 18:11:23 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Aug 6 18:11:23 2015 +0300 -- src/java/org/apache/cassandra/config/DatabaseDescriptor.java | 1 - src/java/org/apache/cassandra/net/MessagingService.java | 8 ++-- src/java/org/apache/cassandra/service/StorageService.java| 1 - 3 files changed, 2 insertions(+), 8 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/39ee0408/src/java/org/apache/cassandra/config/DatabaseDescriptor.java -- diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java index 02f3c17..6d6745a 100644 --- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java +++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java @@ -992,7 +992,6 @@ public class DatabaseDescriptor case PAXOS_PREPARE: case PAXOS_PROPOSE: case BATCHLOG_MUTATION: -case MATERIALIZED_VIEW_MUTATION: return getWriteRpcTimeout(); case COUNTER_MUTATION: return getCounterWriteRpcTimeout(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/39ee0408/src/java/org/apache/cassandra/net/MessagingService.java -- diff --git a/src/java/org/apache/cassandra/net/MessagingService.java b/src/java/org/apache/cassandra/net/MessagingService.java index e10b4cb..da475f7 100644 --- a/src/java/org/apache/cassandra/net/MessagingService.java +++ b/src/java/org/apache/cassandra/net/MessagingService.java @@ -135,11 +135,12 @@ public final class MessagingService implements MessagingServiceMBean PAXOS_COMMIT, @Deprecated PAGED_RANGE, BATCHLOG_MUTATION, -MATERIALIZED_VIEW_MUTATION, // remember to add new verbs at the end, since we serialize by ordinal UNUSED_1, UNUSED_2, UNUSED_3, +UNUSED_4, +UNUSED_5, ; } @@ -147,7 +148,6 @@ public final class MessagingService implements MessagingServiceMBean {{ put(Verb.MUTATION, Stage.MUTATION); put(Verb.COUNTER_MUTATION, Stage.COUNTER_MUTATION); -put(Verb.MATERIALIZED_VIEW_MUTATION, Stage.MATERIALIZED_VIEW_MUTATION); put(Verb.BATCHLOG_MUTATION, Stage.BATCHLOG_MUTATION); put(Verb.READ_REPAIR, Stage.MUTATION); put(Verb.TRUNCATE, Stage.MUTATION); @@ -208,7 +208,6 @@ public final class MessagingService implements MessagingServiceMBean put(Verb.MUTATION, Mutation.serializer); put(Verb.BATCHLOG_MUTATION, Mutation.serializer); -put(Verb.MATERIALIZED_VIEW_MUTATION, Mutation.serializer); put(Verb.READ_REPAIR, Mutation.serializer); put(Verb.READ, ReadCommand.serializer); //put(Verb.RANGE_SLICE, ReadCommand.legacyRangeSliceCommandSerializer); @@ -236,7 +235,6 @@ public final class MessagingService implements MessagingServiceMBean {{ put(Verb.MUTATION, WriteResponse.serializer); put(Verb.BATCHLOG_MUTATION, WriteResponse.serializer); -put(Verb.MATERIALIZED_VIEW_MUTATION, WriteResponse.serializer); put(Verb.READ_REPAIR, WriteResponse.serializer); put(Verb.COUNTER_MUTATION, WriteResponse.serializer); put(Verb.RANGE_SLICE, ReadResponse.legacyRangeSliceReplySerializer); @@ -300,7 +298,6 @@ public final class MessagingService implements MessagingServiceMBean public static final EnumSet DROPPABLE_VERBS = EnumSet.of(Verb._TRACE, Verb.MUTATION, Verb.BATCHLOG_MUTATION, //FIXME: should this be droppable?? - Verb.MATERIALIZED_VIEW_MUTATION, Verb.COUNTER_MUTATION, Verb.READ_REPAIR, Verb.READ, @@ -630,7 +627,6 @@ public final class MessagingServ
[2/2] cassandra git commit: Merge branch 'cassandra-3.0' into trunk
Merge branch 'cassandra-3.0' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/989c3aa8 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/989c3aa8 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/989c3aa8 Branch: refs/heads/trunk Commit: 989c3aa8204a4cf4e142ba029c9b23e18dc6fd24 Parents: 4146853 39ee040 Author: Aleksey Yeschenko Authored: Thu Aug 6 18:12:29 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Aug 6 18:12:29 2015 +0300 -- src/java/org/apache/cassandra/config/DatabaseDescriptor.java | 1 - src/java/org/apache/cassandra/net/MessagingService.java | 8 ++-- src/java/org/apache/cassandra/service/StorageService.java| 1 - 3 files changed, 2 insertions(+), 8 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/989c3aa8/src/java/org/apache/cassandra/config/DatabaseDescriptor.java --
cassandra git commit: Add checksum to saved cache files
Repository: cassandra Updated Branches: refs/heads/cassandra-2.2 7636a6b86 -> fa6205c90 Add checksum to saved cache files patch by Daniel Chia; reviewed by Ariel Weisberg for CASSANDRA-9265 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/fa6205c9 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/fa6205c9 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/fa6205c9 Branch: refs/heads/cassandra-2.2 Commit: fa6205c909656b09165da4b5ca469328a6450917 Parents: 7636a6b Author: Daniel Chia Authored: Wed Aug 5 18:46:30 2015 -0400 Committer: Aleksey Yeschenko Committed: Thu Aug 6 21:48:14 2015 +0300 -- CHANGES.txt | 1 + .../apache/cassandra/cache/AutoSavingCache.java | 96 -- .../cassandra/config/DatabaseDescriptor.java| 13 +- .../io/util/ChecksummedRandomAccessReader.java | 103 +++ .../io/util/DataIntegrityMetadata.java | 16 ++- .../io/ChecksummedRandomAccessReaderTest.java | 127 +++ 6 files changed, 311 insertions(+), 45 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/fa6205c9/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 72ad3cd..ff0fdda 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 2.2.1 + * Add checksum to saved cache files (CASSANDRA-9265) * Log warning when using an aggregate without partition key (CASSANDRA-9737) * Avoid grouping sstables for anticompaction with DTCS (CASSANDRA-9900) * UDF / UDA execution time in trace (CASSANDRA-9723) http://git-wip-us.apache.org/repos/asf/cassandra/blob/fa6205c9/src/java/org/apache/cassandra/cache/AutoSavingCache.java -- diff --git a/src/java/org/apache/cassandra/cache/AutoSavingCache.java b/src/java/org/apache/cassandra/cache/AutoSavingCache.java index a204a18..05653ba 100644 --- a/src/java/org/apache/cassandra/cache/AutoSavingCache.java +++ b/src/java/org/apache/cassandra/cache/AutoSavingCache.java @@ -39,6 +39,7 @@ import org.apache.cassandra.db.compaction.OperationType; import org.apache.cassandra.db.marshal.BytesType; import org.apache.cassandra.io.FSWriteError; import org.apache.cassandra.io.util.*; +import org.apache.cassandra.io.util.ChecksummedRandomAccessReader.CorruptFileException; import org.apache.cassandra.service.CacheService; import org.apache.cassandra.utils.JVMStabilityInspector; import org.apache.cassandra.utils.Pair; @@ -48,8 +49,8 @@ public class AutoSavingCache extends InstrumentingCache extends InstrumentingCache cacheLoader; -private static final String CURRENT_VERSION = "b"; +private static final String CURRENT_VERSION = "c"; private static volatile IStreamFactory streamFactory = new IStreamFactory() { -public InputStream getInputStream(File path) throws FileNotFoundException +public InputStream getInputStream(File dataPath, File crcPath) throws IOException { -return new FileInputStream(path); +return ChecksummedRandomAccessReader.open(dataPath, crcPath); } -public OutputStream getOutputStream(File path) throws FileNotFoundException +public SequentialWriter getOutputWriter(File dataPath, File crcPath) { -return new FileOutputStream(path); +return SequentialWriter.open(dataPath, crcPath); } }; @@ -89,10 +90,16 @@ public class AutoSavingCache extends InstrumentingCache names = Schema.instance.getCF(cfId); -return DatabaseDescriptor.getSerializedCachePath(names.left, names.right, cfId, cacheType, version); +return DatabaseDescriptor.getSerializedCachePath(names.left, names.right, cfId, cacheType, version, "db"); +} + +public File getCacheCrcPath(UUID cfId, String version) +{ +Pair names = Schema.instance.getCF(cfId); +return DatabaseDescriptor.getSerializedCachePath(names.left, names.right, cfId, cacheType, version, "crc"); } public Writer getWriter(int keysToSave) @@ -129,14 +136,15 @@ public class AutoSavingCache extends InstrumentingCache>> futures = new ArrayList>>(); while (in.available() > 0) { @@ -155,10 +163,15 @@ public class AutoSavingCache extends InstrumentingCache extends InstrumentingCache extends InstrumentingCache writers = new HashMap<>(); -HashMap streams = new HashMap<>(); -HashMap paths = new HashMap<>(); +HashMap dataOutputs = new HashMap<>(); +HashMap sequentialWriters = new HashMap<>(); +HashMap&
[2/2] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0
Merge branch 'cassandra-2.2' into cassandra-3.0 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a472aa9e Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a472aa9e Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a472aa9e Branch: refs/heads/cassandra-3.0 Commit: a472aa9eaaff3f67035c53dd92b4aee24f2bed36 Parents: 39ee040 fa6205c Author: Aleksey Yeschenko Authored: Thu Aug 6 21:54:20 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Aug 6 21:54:20 2015 +0300 -- CHANGES.txt | 1 + .../apache/cassandra/cache/AutoSavingCache.java | 96 -- .../cassandra/config/DatabaseDescriptor.java| 13 +- .../io/util/ChecksummedRandomAccessReader.java | 110 .../io/util/DataIntegrityMetadata.java | 17 ++- .../io/ChecksummedRandomAccessReaderTest.java | 127 +++ 6 files changed, 319 insertions(+), 45 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/a472aa9e/CHANGES.txt -- diff --cc CHANGES.txt index 95fade9,ff0fdda..a894297 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,43 -1,6 +1,44 @@@ -2.2.1 +3.0.0-beta1 + * Optimize batchlog replay to avoid full scans (CASSANDRA-7237) + * Repair improvements when using vnodes (CASSANDRA-5220) + * Disable scripted UDFs by default (CASSANDRA-9889) + * Add transparent data encryption core classes (CASSANDRA-9945) + * Bytecode inspection for Java-UDFs (CASSANDRA-9890) + * Use byte to serialize MT hash length (CASSANDRA-9792) +Merged from 2.2: + * Add checksum to saved cache files (CASSANDRA-9265) * Log warning when using an aggregate without partition key (CASSANDRA-9737) +Merged from 2.1: + * Cannot replace token does not exist - DN node removed as Fat Client (CASSANDRA-9871) +Merged from 2.0: + * Don't cast expected bf size to an int (CASSANDRA-9959) + + +3.0.0-alpha1 + * Implement proper sandboxing for UDFs (CASSANDRA-9402) + * Simplify (and unify) cleanup of compaction leftovers (CASSANDRA-7066) + * Allow extra schema definitions in cassandra-stress yaml (CASSANDRA-9850) + * Metrics should use up to date nomenclature (CASSANDRA-9448) + * Change CREATE/ALTER TABLE syntax for compression (CASSANDRA-8384) + * Cleanup crc and adler code for java 8 (CASSANDRA-9650) + * Storage engine refactor (CASSANDRA-8099, 9743, 9746, 9759, 9781, 9808, 9825, + 9848, 9705, 9859, 9867, 9874, 9828, 9801) + * Update Guava to 18.0 (CASSANDRA-9653) + * Bloom filter false positive ratio is not honoured (CASSANDRA-8413) + * New option for cassandra-stress to leave a ratio of columns null (CASSANDRA-9522) + * Change hinted_handoff_enabled yaml setting, JMX (CASSANDRA-9035) + * Add algorithmic token allocation (CASSANDRA-7032) + * Add nodetool command to replay batchlog (CASSANDRA-9547) + * Make file buffer cache independent of paths being read (CASSANDRA-8897) + * Remove deprecated legacy Hadoop code (CASSANDRA-9353) + * Decommissioned nodes will not rejoin the cluster (CASSANDRA-8801) + * Change gossip stabilization to use endpoit size (CASSANDRA-9401) + * Change default garbage collector to G1 (CASSANDRA-7486) + * Populate TokenMetadata early during startup (CASSANDRA-9317) + * Undeprecate cache recentHitRate (CASSANDRA-6591) + * Add support for selectively varint encoding fields (CASSANDRA-9499, 9865) + * Materialized Views (CASSANDRA-6477) +Merged from 2.2: * Avoid grouping sstables for anticompaction with DTCS (CASSANDRA-9900) * UDF / UDA execution time in trace (CASSANDRA-9723) * Fix broken internode SSL (CASSANDRA-9884) http://git-wip-us.apache.org/repos/asf/cassandra/blob/a472aa9e/src/java/org/apache/cassandra/cache/AutoSavingCache.java -- diff --cc src/java/org/apache/cassandra/cache/AutoSavingCache.java index 0b334f5,05653ba..3c5b6a5 --- a/src/java/org/apache/cassandra/cache/AutoSavingCache.java +++ b/src/java/org/apache/cassandra/cache/AutoSavingCache.java @@@ -38,7 -39,7 +38,8 @@@ import org.apache.cassandra.db.compacti import org.apache.cassandra.db.marshal.BytesType; import org.apache.cassandra.io.FSWriteError; import org.apache.cassandra.io.util.*; + import org.apache.cassandra.io.util.ChecksummedRandomAccessReader.CorruptFileException; +import org.apache.cassandra.io.util.DataInputPlus.DataInputStreamPlus; import org.apache.cassandra.service.CacheService; import org.apache.cassandra.utils.JVMStabilityInspector; import org.apache.cassandra.utils.Pair; @@@ -129,14 -136,15 +136,15 @@@ public class AutoSavingCache>> futures = new ArrayList>>(); while (in.available() > 0)
[1/2] cassandra git commit: Add checksum to saved cache files
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 39ee04088 -> a472aa9ea Add checksum to saved cache files patch by Daniel Chia; reviewed by Ariel Weisberg for CASSANDRA-9265 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/fa6205c9 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/fa6205c9 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/fa6205c9 Branch: refs/heads/cassandra-3.0 Commit: fa6205c909656b09165da4b5ca469328a6450917 Parents: 7636a6b Author: Daniel Chia Authored: Wed Aug 5 18:46:30 2015 -0400 Committer: Aleksey Yeschenko Committed: Thu Aug 6 21:48:14 2015 +0300 -- CHANGES.txt | 1 + .../apache/cassandra/cache/AutoSavingCache.java | 96 -- .../cassandra/config/DatabaseDescriptor.java| 13 +- .../io/util/ChecksummedRandomAccessReader.java | 103 +++ .../io/util/DataIntegrityMetadata.java | 16 ++- .../io/ChecksummedRandomAccessReaderTest.java | 127 +++ 6 files changed, 311 insertions(+), 45 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/fa6205c9/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 72ad3cd..ff0fdda 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 2.2.1 + * Add checksum to saved cache files (CASSANDRA-9265) * Log warning when using an aggregate without partition key (CASSANDRA-9737) * Avoid grouping sstables for anticompaction with DTCS (CASSANDRA-9900) * UDF / UDA execution time in trace (CASSANDRA-9723) http://git-wip-us.apache.org/repos/asf/cassandra/blob/fa6205c9/src/java/org/apache/cassandra/cache/AutoSavingCache.java -- diff --git a/src/java/org/apache/cassandra/cache/AutoSavingCache.java b/src/java/org/apache/cassandra/cache/AutoSavingCache.java index a204a18..05653ba 100644 --- a/src/java/org/apache/cassandra/cache/AutoSavingCache.java +++ b/src/java/org/apache/cassandra/cache/AutoSavingCache.java @@ -39,6 +39,7 @@ import org.apache.cassandra.db.compaction.OperationType; import org.apache.cassandra.db.marshal.BytesType; import org.apache.cassandra.io.FSWriteError; import org.apache.cassandra.io.util.*; +import org.apache.cassandra.io.util.ChecksummedRandomAccessReader.CorruptFileException; import org.apache.cassandra.service.CacheService; import org.apache.cassandra.utils.JVMStabilityInspector; import org.apache.cassandra.utils.Pair; @@ -48,8 +49,8 @@ public class AutoSavingCache extends InstrumentingCache extends InstrumentingCache cacheLoader; -private static final String CURRENT_VERSION = "b"; +private static final String CURRENT_VERSION = "c"; private static volatile IStreamFactory streamFactory = new IStreamFactory() { -public InputStream getInputStream(File path) throws FileNotFoundException +public InputStream getInputStream(File dataPath, File crcPath) throws IOException { -return new FileInputStream(path); +return ChecksummedRandomAccessReader.open(dataPath, crcPath); } -public OutputStream getOutputStream(File path) throws FileNotFoundException +public SequentialWriter getOutputWriter(File dataPath, File crcPath) { -return new FileOutputStream(path); +return SequentialWriter.open(dataPath, crcPath); } }; @@ -89,10 +90,16 @@ public class AutoSavingCache extends InstrumentingCache names = Schema.instance.getCF(cfId); -return DatabaseDescriptor.getSerializedCachePath(names.left, names.right, cfId, cacheType, version); +return DatabaseDescriptor.getSerializedCachePath(names.left, names.right, cfId, cacheType, version, "db"); +} + +public File getCacheCrcPath(UUID cfId, String version) +{ +Pair names = Schema.instance.getCF(cfId); +return DatabaseDescriptor.getSerializedCachePath(names.left, names.right, cfId, cacheType, version, "crc"); } public Writer getWriter(int keysToSave) @@ -129,14 +136,15 @@ public class AutoSavingCache extends InstrumentingCache>> futures = new ArrayList>>(); while (in.available() > 0) { @@ -155,10 +163,15 @@ public class AutoSavingCache extends InstrumentingCache extends InstrumentingCache extends InstrumentingCache writers = new HashMap<>(); -HashMap streams = new HashMap<>(); -HashMap paths = new HashMap<>(); +HashMap dataOutputs = new HashMap<>(); +HashMap sequentialWriters = new HashMap<>(); +HashMap&
[3/3] cassandra git commit: Merge branch 'cassandra-3.0' into trunk
Merge branch 'cassandra-3.0' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/709510e3 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/709510e3 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/709510e3 Branch: refs/heads/trunk Commit: 709510e32a5ccd61a75c02c68c1d519dd2bb25c4 Parents: 989c3aa a472aa9 Author: Aleksey Yeschenko Authored: Thu Aug 6 21:54:45 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Aug 6 21:54:45 2015 +0300 -- CHANGES.txt | 1 + .../apache/cassandra/cache/AutoSavingCache.java | 96 -- .../cassandra/config/DatabaseDescriptor.java| 13 +- .../io/util/ChecksummedRandomAccessReader.java | 110 .../io/util/DataIntegrityMetadata.java | 17 ++- .../io/ChecksummedRandomAccessReaderTest.java | 127 +++ 6 files changed, 319 insertions(+), 45 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/709510e3/src/java/org/apache/cassandra/config/DatabaseDescriptor.java --
[1/3] cassandra git commit: Add checksum to saved cache files
Repository: cassandra Updated Branches: refs/heads/trunk 989c3aa82 -> 709510e32 Add checksum to saved cache files patch by Daniel Chia; reviewed by Ariel Weisberg for CASSANDRA-9265 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/fa6205c9 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/fa6205c9 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/fa6205c9 Branch: refs/heads/trunk Commit: fa6205c909656b09165da4b5ca469328a6450917 Parents: 7636a6b Author: Daniel Chia Authored: Wed Aug 5 18:46:30 2015 -0400 Committer: Aleksey Yeschenko Committed: Thu Aug 6 21:48:14 2015 +0300 -- CHANGES.txt | 1 + .../apache/cassandra/cache/AutoSavingCache.java | 96 -- .../cassandra/config/DatabaseDescriptor.java| 13 +- .../io/util/ChecksummedRandomAccessReader.java | 103 +++ .../io/util/DataIntegrityMetadata.java | 16 ++- .../io/ChecksummedRandomAccessReaderTest.java | 127 +++ 6 files changed, 311 insertions(+), 45 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/fa6205c9/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 72ad3cd..ff0fdda 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 2.2.1 + * Add checksum to saved cache files (CASSANDRA-9265) * Log warning when using an aggregate without partition key (CASSANDRA-9737) * Avoid grouping sstables for anticompaction with DTCS (CASSANDRA-9900) * UDF / UDA execution time in trace (CASSANDRA-9723) http://git-wip-us.apache.org/repos/asf/cassandra/blob/fa6205c9/src/java/org/apache/cassandra/cache/AutoSavingCache.java -- diff --git a/src/java/org/apache/cassandra/cache/AutoSavingCache.java b/src/java/org/apache/cassandra/cache/AutoSavingCache.java index a204a18..05653ba 100644 --- a/src/java/org/apache/cassandra/cache/AutoSavingCache.java +++ b/src/java/org/apache/cassandra/cache/AutoSavingCache.java @@ -39,6 +39,7 @@ import org.apache.cassandra.db.compaction.OperationType; import org.apache.cassandra.db.marshal.BytesType; import org.apache.cassandra.io.FSWriteError; import org.apache.cassandra.io.util.*; +import org.apache.cassandra.io.util.ChecksummedRandomAccessReader.CorruptFileException; import org.apache.cassandra.service.CacheService; import org.apache.cassandra.utils.JVMStabilityInspector; import org.apache.cassandra.utils.Pair; @@ -48,8 +49,8 @@ public class AutoSavingCache extends InstrumentingCache extends InstrumentingCache cacheLoader; -private static final String CURRENT_VERSION = "b"; +private static final String CURRENT_VERSION = "c"; private static volatile IStreamFactory streamFactory = new IStreamFactory() { -public InputStream getInputStream(File path) throws FileNotFoundException +public InputStream getInputStream(File dataPath, File crcPath) throws IOException { -return new FileInputStream(path); +return ChecksummedRandomAccessReader.open(dataPath, crcPath); } -public OutputStream getOutputStream(File path) throws FileNotFoundException +public SequentialWriter getOutputWriter(File dataPath, File crcPath) { -return new FileOutputStream(path); +return SequentialWriter.open(dataPath, crcPath); } }; @@ -89,10 +90,16 @@ public class AutoSavingCache extends InstrumentingCache names = Schema.instance.getCF(cfId); -return DatabaseDescriptor.getSerializedCachePath(names.left, names.right, cfId, cacheType, version); +return DatabaseDescriptor.getSerializedCachePath(names.left, names.right, cfId, cacheType, version, "db"); +} + +public File getCacheCrcPath(UUID cfId, String version) +{ +Pair names = Schema.instance.getCF(cfId); +return DatabaseDescriptor.getSerializedCachePath(names.left, names.right, cfId, cacheType, version, "crc"); } public Writer getWriter(int keysToSave) @@ -129,14 +136,15 @@ public class AutoSavingCache extends InstrumentingCache>> futures = new ArrayList>>(); while (in.available() > 0) { @@ -155,10 +163,15 @@ public class AutoSavingCache extends InstrumentingCache extends InstrumentingCache extends InstrumentingCache writers = new HashMap<>(); -HashMap streams = new HashMap<>(); -HashMap paths = new HashMap<>(); +HashMap dataOutputs = new HashMap<>(); +HashMap sequentialWriters = new HashMap<>(); +HashMap> pa
[2/3] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0
Merge branch 'cassandra-2.2' into cassandra-3.0 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a472aa9e Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a472aa9e Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a472aa9e Branch: refs/heads/trunk Commit: a472aa9eaaff3f67035c53dd92b4aee24f2bed36 Parents: 39ee040 fa6205c Author: Aleksey Yeschenko Authored: Thu Aug 6 21:54:20 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Aug 6 21:54:20 2015 +0300 -- CHANGES.txt | 1 + .../apache/cassandra/cache/AutoSavingCache.java | 96 -- .../cassandra/config/DatabaseDescriptor.java| 13 +- .../io/util/ChecksummedRandomAccessReader.java | 110 .../io/util/DataIntegrityMetadata.java | 17 ++- .../io/ChecksummedRandomAccessReaderTest.java | 127 +++ 6 files changed, 319 insertions(+), 45 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/a472aa9e/CHANGES.txt -- diff --cc CHANGES.txt index 95fade9,ff0fdda..a894297 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,43 -1,6 +1,44 @@@ -2.2.1 +3.0.0-beta1 + * Optimize batchlog replay to avoid full scans (CASSANDRA-7237) + * Repair improvements when using vnodes (CASSANDRA-5220) + * Disable scripted UDFs by default (CASSANDRA-9889) + * Add transparent data encryption core classes (CASSANDRA-9945) + * Bytecode inspection for Java-UDFs (CASSANDRA-9890) + * Use byte to serialize MT hash length (CASSANDRA-9792) +Merged from 2.2: + * Add checksum to saved cache files (CASSANDRA-9265) * Log warning when using an aggregate without partition key (CASSANDRA-9737) +Merged from 2.1: + * Cannot replace token does not exist - DN node removed as Fat Client (CASSANDRA-9871) +Merged from 2.0: + * Don't cast expected bf size to an int (CASSANDRA-9959) + + +3.0.0-alpha1 + * Implement proper sandboxing for UDFs (CASSANDRA-9402) + * Simplify (and unify) cleanup of compaction leftovers (CASSANDRA-7066) + * Allow extra schema definitions in cassandra-stress yaml (CASSANDRA-9850) + * Metrics should use up to date nomenclature (CASSANDRA-9448) + * Change CREATE/ALTER TABLE syntax for compression (CASSANDRA-8384) + * Cleanup crc and adler code for java 8 (CASSANDRA-9650) + * Storage engine refactor (CASSANDRA-8099, 9743, 9746, 9759, 9781, 9808, 9825, + 9848, 9705, 9859, 9867, 9874, 9828, 9801) + * Update Guava to 18.0 (CASSANDRA-9653) + * Bloom filter false positive ratio is not honoured (CASSANDRA-8413) + * New option for cassandra-stress to leave a ratio of columns null (CASSANDRA-9522) + * Change hinted_handoff_enabled yaml setting, JMX (CASSANDRA-9035) + * Add algorithmic token allocation (CASSANDRA-7032) + * Add nodetool command to replay batchlog (CASSANDRA-9547) + * Make file buffer cache independent of paths being read (CASSANDRA-8897) + * Remove deprecated legacy Hadoop code (CASSANDRA-9353) + * Decommissioned nodes will not rejoin the cluster (CASSANDRA-8801) + * Change gossip stabilization to use endpoit size (CASSANDRA-9401) + * Change default garbage collector to G1 (CASSANDRA-7486) + * Populate TokenMetadata early during startup (CASSANDRA-9317) + * Undeprecate cache recentHitRate (CASSANDRA-6591) + * Add support for selectively varint encoding fields (CASSANDRA-9499, 9865) + * Materialized Views (CASSANDRA-6477) +Merged from 2.2: * Avoid grouping sstables for anticompaction with DTCS (CASSANDRA-9900) * UDF / UDA execution time in trace (CASSANDRA-9723) * Fix broken internode SSL (CASSANDRA-9884) http://git-wip-us.apache.org/repos/asf/cassandra/blob/a472aa9e/src/java/org/apache/cassandra/cache/AutoSavingCache.java -- diff --cc src/java/org/apache/cassandra/cache/AutoSavingCache.java index 0b334f5,05653ba..3c5b6a5 --- a/src/java/org/apache/cassandra/cache/AutoSavingCache.java +++ b/src/java/org/apache/cassandra/cache/AutoSavingCache.java @@@ -38,7 -39,7 +38,8 @@@ import org.apache.cassandra.db.compacti import org.apache.cassandra.db.marshal.BytesType; import org.apache.cassandra.io.FSWriteError; import org.apache.cassandra.io.util.*; + import org.apache.cassandra.io.util.ChecksummedRandomAccessReader.CorruptFileException; +import org.apache.cassandra.io.util.DataInputPlus.DataInputStreamPlus; import org.apache.cassandra.service.CacheService; import org.apache.cassandra.utils.JVMStabilityInspector; import org.apache.cassandra.utils.Pair; @@@ -129,14 -136,15 +136,15 @@@ public class AutoSavingCache>> futures = new ArrayList>>(); while (in.available() > 0) { http
cassandra git commit: Write hints for paxos commits
Repository: cassandra Updated Branches: refs/heads/cassandra-2.1 3b7934f1a -> 07a7e80c3 Write hints for paxos commits patch by Sankalp Kohli and Aleksey Yeschenko for CASSANDRA-7342 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/07a7e80c Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/07a7e80c Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/07a7e80c Branch: refs/heads/cassandra-2.1 Commit: 07a7e80c321b6667cc44a236f999c7837fe48e20 Parents: 3b7934f Author: sankalp kohli Authored: Thu Aug 6 18:56:37 2015 +0300 Committer: Aleksey Yeschenko Committed: Sun Aug 9 22:52:03 2015 +0300 -- CHANGES.txt | 1 + src/java/org/apache/cassandra/net/MessagingService.java | 11 +-- .../org/apache/cassandra/net/WriteCallbackInfo.java | 11 ++- src/java/org/apache/cassandra/service/StorageProxy.java | 12 4 files changed, 24 insertions(+), 11 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 3b0241c..7151883 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 2.1.9 + * Write hints for paxos commits (CASSANDRA-7342) * (cqlsh) Fix timestamps before 1970 on Windows, always use UTC for timestamp display (CASSANDRA-1) * (cqlsh) Avoid overwriting new config file with old config http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/src/java/org/apache/cassandra/net/MessagingService.java -- diff --git a/src/java/org/apache/cassandra/net/MessagingService.java b/src/java/org/apache/cassandra/net/MessagingService.java index 1ad0e7c..d7825d4 100644 --- a/src/java/org/apache/cassandra/net/MessagingService.java +++ b/src/java/org/apache/cassandra/net/MessagingService.java @@ -379,8 +379,7 @@ public final class MessagingService implements MessagingServiceMBean if (expiredCallbackInfo.shouldHint()) { -Mutation mutation = (Mutation) ((WriteCallbackInfo) expiredCallbackInfo).sentMessage.payload; - +Mutation mutation = ((WriteCallbackInfo) expiredCallbackInfo).mutation(); return StorageProxy.submitHint(mutation, expiredCallbackInfo.target, null); } @@ -594,13 +593,13 @@ public final class MessagingService implements MessagingServiceMBean } public int addCallback(IAsyncCallback cb, - MessageOut message, + MessageOut message, InetAddress to, long timeout, ConsistencyLevel consistencyLevel, boolean allowHints) { -assert message.verb == Verb.MUTATION || message.verb == Verb.COUNTER_MUTATION; +assert message.verb == Verb.MUTATION || message.verb == Verb.COUNTER_MUTATION || message.verb == Verb.PAXOS_COMMIT; int messageId = nextId(); CallbackInfo previous = callbacks.put(messageId, @@ -651,7 +650,7 @@ public final class MessagingService implements MessagingServiceMBean } /** - * Send a mutation message to a given endpoint. This method specifies a callback + * Send a mutation message or a Paxos Commit to a given endpoint. This method specifies a callback * which is invoked with the actual response. * Also holds the message (only mutation messages) to determine if it * needs to trigger a hint (uses StorageProxy for that). @@ -662,7 +661,7 @@ public final class MessagingService implements MessagingServiceMBean *suggest that a timeout occurred to the invoker of the send(). * @return an reference to message id used to match with the result */ -public int sendRR(MessageOut message, +public int sendRR(MessageOut message, InetAddress to, AbstractWriteResponseHandler handler, boolean allowHints) http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/src/java/org/apache/cassandra/net/WriteCallbackInfo.java -- diff --git a/src/java/org/apache/cassandra/net/WriteCallbackInfo.java b/src/java/org/apache/cassandra/net/WriteCallbackInfo.java index 987ec15..0cf126f 100644 --- a/src/java/org/apache/cassandra/net/WriteCallbackInfo.java +++ b/src/java/org/apache/cassandra/net/WriteCallbackInfo.java @@ -21,12 +21,14 @@ package org.apache.cassandra.net; import java.net.InetAddress; import org.apache.cassandra.db.ConsistencyLe
[1/2] cassandra git commit: Write hints for paxos commits
Repository: cassandra Updated Branches: refs/heads/cassandra-2.2 a5297f16e -> 0b99d33ee Write hints for paxos commits patch by Sankalp Kohli and Aleksey Yeschenko for CASSANDRA-7342 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/07a7e80c Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/07a7e80c Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/07a7e80c Branch: refs/heads/cassandra-2.2 Commit: 07a7e80c321b6667cc44a236f999c7837fe48e20 Parents: 3b7934f Author: sankalp kohli Authored: Thu Aug 6 18:56:37 2015 +0300 Committer: Aleksey Yeschenko Committed: Sun Aug 9 22:52:03 2015 +0300 -- CHANGES.txt | 1 + src/java/org/apache/cassandra/net/MessagingService.java | 11 +-- .../org/apache/cassandra/net/WriteCallbackInfo.java | 11 ++- src/java/org/apache/cassandra/service/StorageProxy.java | 12 4 files changed, 24 insertions(+), 11 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 3b0241c..7151883 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 2.1.9 + * Write hints for paxos commits (CASSANDRA-7342) * (cqlsh) Fix timestamps before 1970 on Windows, always use UTC for timestamp display (CASSANDRA-1) * (cqlsh) Avoid overwriting new config file with old config http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/src/java/org/apache/cassandra/net/MessagingService.java -- diff --git a/src/java/org/apache/cassandra/net/MessagingService.java b/src/java/org/apache/cassandra/net/MessagingService.java index 1ad0e7c..d7825d4 100644 --- a/src/java/org/apache/cassandra/net/MessagingService.java +++ b/src/java/org/apache/cassandra/net/MessagingService.java @@ -379,8 +379,7 @@ public final class MessagingService implements MessagingServiceMBean if (expiredCallbackInfo.shouldHint()) { -Mutation mutation = (Mutation) ((WriteCallbackInfo) expiredCallbackInfo).sentMessage.payload; - +Mutation mutation = ((WriteCallbackInfo) expiredCallbackInfo).mutation(); return StorageProxy.submitHint(mutation, expiredCallbackInfo.target, null); } @@ -594,13 +593,13 @@ public final class MessagingService implements MessagingServiceMBean } public int addCallback(IAsyncCallback cb, - MessageOut message, + MessageOut message, InetAddress to, long timeout, ConsistencyLevel consistencyLevel, boolean allowHints) { -assert message.verb == Verb.MUTATION || message.verb == Verb.COUNTER_MUTATION; +assert message.verb == Verb.MUTATION || message.verb == Verb.COUNTER_MUTATION || message.verb == Verb.PAXOS_COMMIT; int messageId = nextId(); CallbackInfo previous = callbacks.put(messageId, @@ -651,7 +650,7 @@ public final class MessagingService implements MessagingServiceMBean } /** - * Send a mutation message to a given endpoint. This method specifies a callback + * Send a mutation message or a Paxos Commit to a given endpoint. This method specifies a callback * which is invoked with the actual response. * Also holds the message (only mutation messages) to determine if it * needs to trigger a hint (uses StorageProxy for that). @@ -662,7 +661,7 @@ public final class MessagingService implements MessagingServiceMBean *suggest that a timeout occurred to the invoker of the send(). * @return an reference to message id used to match with the result */ -public int sendRR(MessageOut message, +public int sendRR(MessageOut message, InetAddress to, AbstractWriteResponseHandler handler, boolean allowHints) http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/src/java/org/apache/cassandra/net/WriteCallbackInfo.java -- diff --git a/src/java/org/apache/cassandra/net/WriteCallbackInfo.java b/src/java/org/apache/cassandra/net/WriteCallbackInfo.java index 987ec15..0cf126f 100644 --- a/src/java/org/apache/cassandra/net/WriteCallbackInfo.java +++ b/src/java/org/apache/cassandra/net/WriteCallbackInfo.java @@ -21,12 +21,14 @@ package org.apache.cassandra.net; import java.net.InetAddress; import org.apache.cassandra.db.ConsistencyLe
[2/2] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2
Merge branch 'cassandra-2.1' into cassandra-2.2 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/0b99d33e Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/0b99d33e Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/0b99d33e Branch: refs/heads/cassandra-2.2 Commit: 0b99d33eec5e703b6643aafc3a40a54f3fb088a0 Parents: a5297f1 07a7e80 Author: Aleksey Yeschenko Authored: Sun Aug 9 23:01:06 2015 +0300 Committer: Aleksey Yeschenko Committed: Sun Aug 9 23:01:06 2015 +0300 -- CHANGES.txt| 1 + .../org/apache/cassandra/net/MessagingService.java | 13 ++--- .../org/apache/cassandra/net/WriteCallbackInfo.java| 11 ++- .../org/apache/cassandra/service/StorageProxy.java | 12 4 files changed, 25 insertions(+), 12 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/CHANGES.txt -- diff --cc CHANGES.txt index 705e560,7151883..a913fe7 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,10 -1,5 +1,11 @@@ -2.1.9 +2.2.1 + * Add checksum to saved cache files (CASSANDRA-9265) + * Log warning when using an aggregate without partition key (CASSANDRA-9737) + * Avoid grouping sstables for anticompaction with DTCS (CASSANDRA-9900) + * UDF / UDA execution time in trace (CASSANDRA-9723) + * Fix broken internode SSL (CASSANDRA-9884) +Merged from 2.1: + * Write hints for paxos commits (CASSANDRA-7342) * (cqlsh) Fix timestamps before 1970 on Windows, always use UTC for timestamp display (CASSANDRA-1) * (cqlsh) Avoid overwriting new config file with old config http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/src/java/org/apache/cassandra/net/MessagingService.java -- diff --cc src/java/org/apache/cassandra/net/MessagingService.java index bb46bbf,d7825d4..f8fd6fd --- a/src/java/org/apache/cassandra/net/MessagingService.java +++ b/src/java/org/apache/cassandra/net/MessagingService.java @@@ -680,9 -661,9 +679,9 @@@ public final class MessagingService imp *suggest that a timeout occurred to the invoker of the send(). * @return an reference to message id used to match with the result */ - public int sendRR(MessageOut message, + public int sendRR(MessageOut message, InetAddress to, - AbstractWriteResponseHandler handler, - AbstractWriteResponseHandler handler, ++ AbstractWriteResponseHandler handler, boolean allowHints) { int id = addCallback(handler, message, to, message.getTimeout(), handler.consistencyLevel, allowHints); http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/src/java/org/apache/cassandra/net/WriteCallbackInfo.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/src/java/org/apache/cassandra/service/StorageProxy.java --
[2/3] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2
Merge branch 'cassandra-2.1' into cassandra-2.2 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/0b99d33e Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/0b99d33e Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/0b99d33e Branch: refs/heads/cassandra-3.0 Commit: 0b99d33eec5e703b6643aafc3a40a54f3fb088a0 Parents: a5297f1 07a7e80 Author: Aleksey Yeschenko Authored: Sun Aug 9 23:01:06 2015 +0300 Committer: Aleksey Yeschenko Committed: Sun Aug 9 23:01:06 2015 +0300 -- CHANGES.txt| 1 + .../org/apache/cassandra/net/MessagingService.java | 13 ++--- .../org/apache/cassandra/net/WriteCallbackInfo.java| 11 ++- .../org/apache/cassandra/service/StorageProxy.java | 12 4 files changed, 25 insertions(+), 12 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/CHANGES.txt -- diff --cc CHANGES.txt index 705e560,7151883..a913fe7 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,10 -1,5 +1,11 @@@ -2.1.9 +2.2.1 + * Add checksum to saved cache files (CASSANDRA-9265) + * Log warning when using an aggregate without partition key (CASSANDRA-9737) + * Avoid grouping sstables for anticompaction with DTCS (CASSANDRA-9900) + * UDF / UDA execution time in trace (CASSANDRA-9723) + * Fix broken internode SSL (CASSANDRA-9884) +Merged from 2.1: + * Write hints for paxos commits (CASSANDRA-7342) * (cqlsh) Fix timestamps before 1970 on Windows, always use UTC for timestamp display (CASSANDRA-1) * (cqlsh) Avoid overwriting new config file with old config http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/src/java/org/apache/cassandra/net/MessagingService.java -- diff --cc src/java/org/apache/cassandra/net/MessagingService.java index bb46bbf,d7825d4..f8fd6fd --- a/src/java/org/apache/cassandra/net/MessagingService.java +++ b/src/java/org/apache/cassandra/net/MessagingService.java @@@ -680,9 -661,9 +679,9 @@@ public final class MessagingService imp *suggest that a timeout occurred to the invoker of the send(). * @return an reference to message id used to match with the result */ - public int sendRR(MessageOut message, + public int sendRR(MessageOut message, InetAddress to, - AbstractWriteResponseHandler handler, - AbstractWriteResponseHandler handler, ++ AbstractWriteResponseHandler handler, boolean allowHints) { int id = addCallback(handler, message, to, message.getTimeout(), handler.consistencyLevel, allowHints); http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/src/java/org/apache/cassandra/net/WriteCallbackInfo.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/src/java/org/apache/cassandra/service/StorageProxy.java --
[1/3] cassandra git commit: Write hints for paxos commits
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 8984ca79f -> f568a5d8a Write hints for paxos commits patch by Sankalp Kohli and Aleksey Yeschenko for CASSANDRA-7342 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/07a7e80c Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/07a7e80c Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/07a7e80c Branch: refs/heads/cassandra-3.0 Commit: 07a7e80c321b6667cc44a236f999c7837fe48e20 Parents: 3b7934f Author: sankalp kohli Authored: Thu Aug 6 18:56:37 2015 +0300 Committer: Aleksey Yeschenko Committed: Sun Aug 9 22:52:03 2015 +0300 -- CHANGES.txt | 1 + src/java/org/apache/cassandra/net/MessagingService.java | 11 +-- .../org/apache/cassandra/net/WriteCallbackInfo.java | 11 ++- src/java/org/apache/cassandra/service/StorageProxy.java | 12 4 files changed, 24 insertions(+), 11 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 3b0241c..7151883 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 2.1.9 + * Write hints for paxos commits (CASSANDRA-7342) * (cqlsh) Fix timestamps before 1970 on Windows, always use UTC for timestamp display (CASSANDRA-1) * (cqlsh) Avoid overwriting new config file with old config http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/src/java/org/apache/cassandra/net/MessagingService.java -- diff --git a/src/java/org/apache/cassandra/net/MessagingService.java b/src/java/org/apache/cassandra/net/MessagingService.java index 1ad0e7c..d7825d4 100644 --- a/src/java/org/apache/cassandra/net/MessagingService.java +++ b/src/java/org/apache/cassandra/net/MessagingService.java @@ -379,8 +379,7 @@ public final class MessagingService implements MessagingServiceMBean if (expiredCallbackInfo.shouldHint()) { -Mutation mutation = (Mutation) ((WriteCallbackInfo) expiredCallbackInfo).sentMessage.payload; - +Mutation mutation = ((WriteCallbackInfo) expiredCallbackInfo).mutation(); return StorageProxy.submitHint(mutation, expiredCallbackInfo.target, null); } @@ -594,13 +593,13 @@ public final class MessagingService implements MessagingServiceMBean } public int addCallback(IAsyncCallback cb, - MessageOut message, + MessageOut message, InetAddress to, long timeout, ConsistencyLevel consistencyLevel, boolean allowHints) { -assert message.verb == Verb.MUTATION || message.verb == Verb.COUNTER_MUTATION; +assert message.verb == Verb.MUTATION || message.verb == Verb.COUNTER_MUTATION || message.verb == Verb.PAXOS_COMMIT; int messageId = nextId(); CallbackInfo previous = callbacks.put(messageId, @@ -651,7 +650,7 @@ public final class MessagingService implements MessagingServiceMBean } /** - * Send a mutation message to a given endpoint. This method specifies a callback + * Send a mutation message or a Paxos Commit to a given endpoint. This method specifies a callback * which is invoked with the actual response. * Also holds the message (only mutation messages) to determine if it * needs to trigger a hint (uses StorageProxy for that). @@ -662,7 +661,7 @@ public final class MessagingService implements MessagingServiceMBean *suggest that a timeout occurred to the invoker of the send(). * @return an reference to message id used to match with the result */ -public int sendRR(MessageOut message, +public int sendRR(MessageOut message, InetAddress to, AbstractWriteResponseHandler handler, boolean allowHints) http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/src/java/org/apache/cassandra/net/WriteCallbackInfo.java -- diff --git a/src/java/org/apache/cassandra/net/WriteCallbackInfo.java b/src/java/org/apache/cassandra/net/WriteCallbackInfo.java index 987ec15..0cf126f 100644 --- a/src/java/org/apache/cassandra/net/WriteCallbackInfo.java +++ b/src/java/org/apache/cassandra/net/WriteCallbackInfo.java @@ -21,12 +21,14 @@ package org.apache.cassandra.net; import java.net.InetAddress; import org.apache.cassandra.db.ConsistencyLe
[3/3] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0
Merge branch 'cassandra-2.2' into cassandra-3.0 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f568a5d8 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f568a5d8 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f568a5d8 Branch: refs/heads/cassandra-3.0 Commit: f568a5d8a8fc2d165801e792f1133ac111c4df27 Parents: 8984ca7 0b99d33 Author: Aleksey Yeschenko Authored: Sun Aug 9 23:04:01 2015 +0300 Committer: Aleksey Yeschenko Committed: Sun Aug 9 23:04:01 2015 +0300 -- CHANGES.txt | 1 + .../org/apache/cassandra/net/MessagingService.java | 16 .../org/apache/cassandra/net/WriteCallbackInfo.java | 11 ++- .../org/apache/cassandra/service/StorageProxy.java | 12 4 files changed, 27 insertions(+), 13 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/f568a5d8/CHANGES.txt -- diff --cc CHANGES.txt index 0ba7b4e,a913fe7..7cb9f16 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,17 -1,11 +1,18 @@@ -2.2.1 +3.0.0-beta1 + * Support mixed-version clusters with Cassandra 2.1 and 2.2 (CASSANDRA-9704) + * Fix multiple slices on RowSearchers (CASSANDRA-10002) + * Fix bug in merging of collections (CASSANDRA-10001) + * Optimize batchlog replay to avoid full scans (CASSANDRA-7237) + * Repair improvements when using vnodes (CASSANDRA-5220) + * Disable scripted UDFs by default (CASSANDRA-9889) + * Add transparent data encryption core classes (CASSANDRA-9945) + * Bytecode inspection for Java-UDFs (CASSANDRA-9890) + * Use byte to serialize MT hash length (CASSANDRA-9792) +Merged from 2.2: * Add checksum to saved cache files (CASSANDRA-9265) * Log warning when using an aggregate without partition key (CASSANDRA-9737) - * Avoid grouping sstables for anticompaction with DTCS (CASSANDRA-9900) - * UDF / UDA execution time in trace (CASSANDRA-9723) - * Fix broken internode SSL (CASSANDRA-9884) Merged from 2.1: + * Write hints for paxos commits (CASSANDRA-7342) * (cqlsh) Fix timestamps before 1970 on Windows, always use UTC for timestamp display (CASSANDRA-1) * (cqlsh) Avoid overwriting new config file with old config http://git-wip-us.apache.org/repos/asf/cassandra/blob/f568a5d8/src/java/org/apache/cassandra/net/MessagingService.java -- diff --cc src/java/org/apache/cassandra/net/MessagingService.java index 25eb0d0,f8fd6fd..0505445 --- a/src/java/org/apache/cassandra/net/MessagingService.java +++ b/src/java/org/apache/cassandra/net/MessagingService.java @@@ -625,9 -617,7 +624,10 @@@ public final class MessagingService imp ConsistencyLevel consistencyLevel, boolean allowHints) { -assert message.verb == Verb.MUTATION || message.verb == Verb.COUNTER_MUTATION || message.verb == Verb.PAXOS_COMMIT; +assert message.verb == Verb.MUTATION -|| message.verb == Verb.BATCHLOG_MUTATION -|| message.verb == Verb.COUNTER_MUTATION; ++|| message.verb == Verb.BATCHLOG_MUTATION ++|| message.verb == Verb.COUNTER_MUTATION ++|| message.verb == Verb.PAXOS_COMMIT; int messageId = nextId(); CallbackInfo previous = callbacks.put(messageId, http://git-wip-us.apache.org/repos/asf/cassandra/blob/f568a5d8/src/java/org/apache/cassandra/service/StorageProxy.java --
[2/4] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2
Merge branch 'cassandra-2.1' into cassandra-2.2 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/0b99d33e Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/0b99d33e Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/0b99d33e Branch: refs/heads/trunk Commit: 0b99d33eec5e703b6643aafc3a40a54f3fb088a0 Parents: a5297f1 07a7e80 Author: Aleksey Yeschenko Authored: Sun Aug 9 23:01:06 2015 +0300 Committer: Aleksey Yeschenko Committed: Sun Aug 9 23:01:06 2015 +0300 -- CHANGES.txt| 1 + .../org/apache/cassandra/net/MessagingService.java | 13 ++--- .../org/apache/cassandra/net/WriteCallbackInfo.java| 11 ++- .../org/apache/cassandra/service/StorageProxy.java | 12 4 files changed, 25 insertions(+), 12 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/CHANGES.txt -- diff --cc CHANGES.txt index 705e560,7151883..a913fe7 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,10 -1,5 +1,11 @@@ -2.1.9 +2.2.1 + * Add checksum to saved cache files (CASSANDRA-9265) + * Log warning when using an aggregate without partition key (CASSANDRA-9737) + * Avoid grouping sstables for anticompaction with DTCS (CASSANDRA-9900) + * UDF / UDA execution time in trace (CASSANDRA-9723) + * Fix broken internode SSL (CASSANDRA-9884) +Merged from 2.1: + * Write hints for paxos commits (CASSANDRA-7342) * (cqlsh) Fix timestamps before 1970 on Windows, always use UTC for timestamp display (CASSANDRA-1) * (cqlsh) Avoid overwriting new config file with old config http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/src/java/org/apache/cassandra/net/MessagingService.java -- diff --cc src/java/org/apache/cassandra/net/MessagingService.java index bb46bbf,d7825d4..f8fd6fd --- a/src/java/org/apache/cassandra/net/MessagingService.java +++ b/src/java/org/apache/cassandra/net/MessagingService.java @@@ -680,9 -661,9 +679,9 @@@ public final class MessagingService imp *suggest that a timeout occurred to the invoker of the send(). * @return an reference to message id used to match with the result */ - public int sendRR(MessageOut message, + public int sendRR(MessageOut message, InetAddress to, - AbstractWriteResponseHandler handler, - AbstractWriteResponseHandler handler, ++ AbstractWriteResponseHandler handler, boolean allowHints) { int id = addCallback(handler, message, to, message.getTimeout(), handler.consistencyLevel, allowHints); http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/src/java/org/apache/cassandra/net/WriteCallbackInfo.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/src/java/org/apache/cassandra/service/StorageProxy.java --
[1/4] cassandra git commit: Write hints for paxos commits
Repository: cassandra Updated Branches: refs/heads/trunk 680accedb -> b6d5f2cf3 Write hints for paxos commits patch by Sankalp Kohli and Aleksey Yeschenko for CASSANDRA-7342 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/07a7e80c Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/07a7e80c Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/07a7e80c Branch: refs/heads/trunk Commit: 07a7e80c321b6667cc44a236f999c7837fe48e20 Parents: 3b7934f Author: sankalp kohli Authored: Thu Aug 6 18:56:37 2015 +0300 Committer: Aleksey Yeschenko Committed: Sun Aug 9 22:52:03 2015 +0300 -- CHANGES.txt | 1 + src/java/org/apache/cassandra/net/MessagingService.java | 11 +-- .../org/apache/cassandra/net/WriteCallbackInfo.java | 11 ++- src/java/org/apache/cassandra/service/StorageProxy.java | 12 4 files changed, 24 insertions(+), 11 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 3b0241c..7151883 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 2.1.9 + * Write hints for paxos commits (CASSANDRA-7342) * (cqlsh) Fix timestamps before 1970 on Windows, always use UTC for timestamp display (CASSANDRA-1) * (cqlsh) Avoid overwriting new config file with old config http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/src/java/org/apache/cassandra/net/MessagingService.java -- diff --git a/src/java/org/apache/cassandra/net/MessagingService.java b/src/java/org/apache/cassandra/net/MessagingService.java index 1ad0e7c..d7825d4 100644 --- a/src/java/org/apache/cassandra/net/MessagingService.java +++ b/src/java/org/apache/cassandra/net/MessagingService.java @@ -379,8 +379,7 @@ public final class MessagingService implements MessagingServiceMBean if (expiredCallbackInfo.shouldHint()) { -Mutation mutation = (Mutation) ((WriteCallbackInfo) expiredCallbackInfo).sentMessage.payload; - +Mutation mutation = ((WriteCallbackInfo) expiredCallbackInfo).mutation(); return StorageProxy.submitHint(mutation, expiredCallbackInfo.target, null); } @@ -594,13 +593,13 @@ public final class MessagingService implements MessagingServiceMBean } public int addCallback(IAsyncCallback cb, - MessageOut message, + MessageOut message, InetAddress to, long timeout, ConsistencyLevel consistencyLevel, boolean allowHints) { -assert message.verb == Verb.MUTATION || message.verb == Verb.COUNTER_MUTATION; +assert message.verb == Verb.MUTATION || message.verb == Verb.COUNTER_MUTATION || message.verb == Verb.PAXOS_COMMIT; int messageId = nextId(); CallbackInfo previous = callbacks.put(messageId, @@ -651,7 +650,7 @@ public final class MessagingService implements MessagingServiceMBean } /** - * Send a mutation message to a given endpoint. This method specifies a callback + * Send a mutation message or a Paxos Commit to a given endpoint. This method specifies a callback * which is invoked with the actual response. * Also holds the message (only mutation messages) to determine if it * needs to trigger a hint (uses StorageProxy for that). @@ -662,7 +661,7 @@ public final class MessagingService implements MessagingServiceMBean *suggest that a timeout occurred to the invoker of the send(). * @return an reference to message id used to match with the result */ -public int sendRR(MessageOut message, +public int sendRR(MessageOut message, InetAddress to, AbstractWriteResponseHandler handler, boolean allowHints) http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/src/java/org/apache/cassandra/net/WriteCallbackInfo.java -- diff --git a/src/java/org/apache/cassandra/net/WriteCallbackInfo.java b/src/java/org/apache/cassandra/net/WriteCallbackInfo.java index 987ec15..0cf126f 100644 --- a/src/java/org/apache/cassandra/net/WriteCallbackInfo.java +++ b/src/java/org/apache/cassandra/net/WriteCallbackInfo.java @@ -21,12 +21,14 @@ package org.apache.cassandra.net; import java.net.InetAddress; import org.apache.cassandra.db.ConsistencyLevel; +imp
[4/4] cassandra git commit: Merge branch 'cassandra-3.0' into trunk
Merge branch 'cassandra-3.0' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/b6d5f2cf Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/b6d5f2cf Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/b6d5f2cf Branch: refs/heads/trunk Commit: b6d5f2cf3dc2f663c3b7d35a0ee56d2abfea8e02 Parents: 680acce f568a5d Author: Aleksey Yeschenko Authored: Sun Aug 9 23:05:30 2015 +0300 Committer: Aleksey Yeschenko Committed: Sun Aug 9 23:05:30 2015 +0300 -- CHANGES.txt | 1 + .../org/apache/cassandra/net/MessagingService.java | 16 .../org/apache/cassandra/net/WriteCallbackInfo.java | 11 ++- .../org/apache/cassandra/service/StorageProxy.java | 12 4 files changed, 27 insertions(+), 13 deletions(-) --
[3/4] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0
Merge branch 'cassandra-2.2' into cassandra-3.0 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f568a5d8 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f568a5d8 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f568a5d8 Branch: refs/heads/trunk Commit: f568a5d8a8fc2d165801e792f1133ac111c4df27 Parents: 8984ca7 0b99d33 Author: Aleksey Yeschenko Authored: Sun Aug 9 23:04:01 2015 +0300 Committer: Aleksey Yeschenko Committed: Sun Aug 9 23:04:01 2015 +0300 -- CHANGES.txt | 1 + .../org/apache/cassandra/net/MessagingService.java | 16 .../org/apache/cassandra/net/WriteCallbackInfo.java | 11 ++- .../org/apache/cassandra/service/StorageProxy.java | 12 4 files changed, 27 insertions(+), 13 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/f568a5d8/CHANGES.txt -- diff --cc CHANGES.txt index 0ba7b4e,a913fe7..7cb9f16 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,17 -1,11 +1,18 @@@ -2.2.1 +3.0.0-beta1 + * Support mixed-version clusters with Cassandra 2.1 and 2.2 (CASSANDRA-9704) + * Fix multiple slices on RowSearchers (CASSANDRA-10002) + * Fix bug in merging of collections (CASSANDRA-10001) + * Optimize batchlog replay to avoid full scans (CASSANDRA-7237) + * Repair improvements when using vnodes (CASSANDRA-5220) + * Disable scripted UDFs by default (CASSANDRA-9889) + * Add transparent data encryption core classes (CASSANDRA-9945) + * Bytecode inspection for Java-UDFs (CASSANDRA-9890) + * Use byte to serialize MT hash length (CASSANDRA-9792) +Merged from 2.2: * Add checksum to saved cache files (CASSANDRA-9265) * Log warning when using an aggregate without partition key (CASSANDRA-9737) - * Avoid grouping sstables for anticompaction with DTCS (CASSANDRA-9900) - * UDF / UDA execution time in trace (CASSANDRA-9723) - * Fix broken internode SSL (CASSANDRA-9884) Merged from 2.1: + * Write hints for paxos commits (CASSANDRA-7342) * (cqlsh) Fix timestamps before 1970 on Windows, always use UTC for timestamp display (CASSANDRA-1) * (cqlsh) Avoid overwriting new config file with old config http://git-wip-us.apache.org/repos/asf/cassandra/blob/f568a5d8/src/java/org/apache/cassandra/net/MessagingService.java -- diff --cc src/java/org/apache/cassandra/net/MessagingService.java index 25eb0d0,f8fd6fd..0505445 --- a/src/java/org/apache/cassandra/net/MessagingService.java +++ b/src/java/org/apache/cassandra/net/MessagingService.java @@@ -625,9 -617,7 +624,10 @@@ public final class MessagingService imp ConsistencyLevel consistencyLevel, boolean allowHints) { -assert message.verb == Verb.MUTATION || message.verb == Verb.COUNTER_MUTATION || message.verb == Verb.PAXOS_COMMIT; +assert message.verb == Verb.MUTATION -|| message.verb == Verb.BATCHLOG_MUTATION -|| message.verb == Verb.COUNTER_MUTATION; ++|| message.verb == Verb.BATCHLOG_MUTATION ++|| message.verb == Verb.COUNTER_MUTATION ++|| message.verb == Verb.PAXOS_COMMIT; int messageId = nextId(); CallbackInfo previous = callbacks.put(messageId, http://git-wip-us.apache.org/repos/asf/cassandra/blob/f568a5d8/src/java/org/apache/cassandra/service/StorageProxy.java --
cassandra git commit: Change authorization handling for MVs
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 269f0785f -> 1a9286c07 Change authorization handling for MVs patch by Paulo Motta; reviewed by Aleksey Yeschenko for CASSANDRA-9927 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/1a9286c0 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/1a9286c0 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/1a9286c0 Branch: refs/heads/cassandra-3.0 Commit: 1a9286c07a5c168df677da9d6be7178d087ea005 Parents: 269f078 Author: Paulo Motta Authored: Fri Aug 7 19:08:04 2015 -0300 Committer: Aleksey Yeschenko Committed: Tue Aug 11 02:16:39 2015 +0300 -- CHANGES.txt | 1 + .../AlterMaterializedViewStatement.java | 5 ++- .../CreateMaterializedViewStatement.java| 2 +- .../DropMaterializedViewStatement.java | 35 ++-- .../cql3/statements/SelectStatement.java| 14 ++-- .../cassandra/db/view/MaterializedView.java | 17 ++ 6 files changed, 46 insertions(+), 28 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/1a9286c0/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 7eff824..eacc110 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.0-beta1 + * Change authorization handling for MVs (CASSANDRA-9927) * Add custom JMX enabled executor for UDF sandbox (CASSANDRA-10026) * Fix row deletion bug for Materialized Views (CASSANDRA-10014) * Support mixed-version clusters with Cassandra 2.1 and 2.2 (CASSANDRA-9704) http://git-wip-us.apache.org/repos/asf/cassandra/blob/1a9286c0/src/java/org/apache/cassandra/cql3/statements/AlterMaterializedViewStatement.java -- diff --git a/src/java/org/apache/cassandra/cql3/statements/AlterMaterializedViewStatement.java b/src/java/org/apache/cassandra/cql3/statements/AlterMaterializedViewStatement.java index d0116fb..acc2f90 100644 --- a/src/java/org/apache/cassandra/cql3/statements/AlterMaterializedViewStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/AlterMaterializedViewStatement.java @@ -20,6 +20,7 @@ package org.apache.cassandra.cql3.statements; import org.apache.cassandra.auth.Permission; import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.cql3.CFName; +import org.apache.cassandra.db.view.MaterializedView; import org.apache.cassandra.exceptions.InvalidRequestException; import org.apache.cassandra.exceptions.RequestValidationException; import org.apache.cassandra.exceptions.UnauthorizedException; @@ -41,7 +42,9 @@ public class AlterMaterializedViewStatement extends SchemaAlteringStatement public void checkAccess(ClientState state) throws UnauthorizedException, InvalidRequestException { -state.hasColumnFamilyAccess(keyspace(), columnFamily(), Permission.ALTER); +CFMetaData baseTable = MaterializedView.findBaseTable(keyspace(), columnFamily()); +if (baseTable != null) +state.hasColumnFamilyAccess(keyspace(), baseTable.cfName, Permission.ALTER); } public void validate(ClientState state) http://git-wip-us.apache.org/repos/asf/cassandra/blob/1a9286c0/src/java/org/apache/cassandra/cql3/statements/CreateMaterializedViewStatement.java -- diff --git a/src/java/org/apache/cassandra/cql3/statements/CreateMaterializedViewStatement.java b/src/java/org/apache/cassandra/cql3/statements/CreateMaterializedViewStatement.java index 380b068..ec9e848 100644 --- a/src/java/org/apache/cassandra/cql3/statements/CreateMaterializedViewStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/CreateMaterializedViewStatement.java @@ -76,7 +76,7 @@ public class CreateMaterializedViewStatement extends SchemaAlteringStatement { if (!baseName.hasKeyspace()) baseName.setKeyspace(keyspace(), true); -state.hasKeyspaceAccess(keyspace(), Permission.CREATE); +state.hasColumnFamilyAccess(keyspace(), baseName.getColumnFamily(), Permission.ALTER); } public void validate(ClientState state) throws RequestValidationException http://git-wip-us.apache.org/repos/asf/cassandra/blob/1a9286c0/src/java/org/apache/cassandra/cql3/statements/DropMaterializedViewStatement.java -- diff --git a/src/java/org/apache/cassandra/cql3/statements/DropMaterializedViewStatement.java b/src/java/org/apache/cassandra/cql3/statements/DropMaterializedViewStatement.java index 01d138c..8adba45 100644 --- a/src/java/org/apache/cassandra/cql3/stateme
[2/2] cassandra git commit: Merge branch 'cassandra-3.0' into trunk
Merge branch 'cassandra-3.0' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/1a1c5a00 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/1a1c5a00 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/1a1c5a00 Branch: refs/heads/trunk Commit: 1a1c5a0080173abd1ed7dd22e179c41b421e9506 Parents: 10e9c19 1a9286c Author: Aleksey Yeschenko Authored: Tue Aug 11 02:17:36 2015 +0300 Committer: Aleksey Yeschenko Committed: Tue Aug 11 02:17:36 2015 +0300 -- CHANGES.txt | 1 + .../AlterMaterializedViewStatement.java | 5 ++- .../CreateMaterializedViewStatement.java| 2 +- .../DropMaterializedViewStatement.java | 35 ++-- .../cql3/statements/SelectStatement.java| 14 ++-- .../cassandra/db/view/MaterializedView.java | 17 ++ 6 files changed, 46 insertions(+), 28 deletions(-) --
[1/2] cassandra git commit: Change authorization handling for MVs
Repository: cassandra Updated Branches: refs/heads/trunk 10e9c193b -> 1a1c5a008 Change authorization handling for MVs patch by Paulo Motta; reviewed by Aleksey Yeschenko for CASSANDRA-9927 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/1a9286c0 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/1a9286c0 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/1a9286c0 Branch: refs/heads/trunk Commit: 1a9286c07a5c168df677da9d6be7178d087ea005 Parents: 269f078 Author: Paulo Motta Authored: Fri Aug 7 19:08:04 2015 -0300 Committer: Aleksey Yeschenko Committed: Tue Aug 11 02:16:39 2015 +0300 -- CHANGES.txt | 1 + .../AlterMaterializedViewStatement.java | 5 ++- .../CreateMaterializedViewStatement.java| 2 +- .../DropMaterializedViewStatement.java | 35 ++-- .../cql3/statements/SelectStatement.java| 14 ++-- .../cassandra/db/view/MaterializedView.java | 17 ++ 6 files changed, 46 insertions(+), 28 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/1a9286c0/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 7eff824..eacc110 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.0-beta1 + * Change authorization handling for MVs (CASSANDRA-9927) * Add custom JMX enabled executor for UDF sandbox (CASSANDRA-10026) * Fix row deletion bug for Materialized Views (CASSANDRA-10014) * Support mixed-version clusters with Cassandra 2.1 and 2.2 (CASSANDRA-9704) http://git-wip-us.apache.org/repos/asf/cassandra/blob/1a9286c0/src/java/org/apache/cassandra/cql3/statements/AlterMaterializedViewStatement.java -- diff --git a/src/java/org/apache/cassandra/cql3/statements/AlterMaterializedViewStatement.java b/src/java/org/apache/cassandra/cql3/statements/AlterMaterializedViewStatement.java index d0116fb..acc2f90 100644 --- a/src/java/org/apache/cassandra/cql3/statements/AlterMaterializedViewStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/AlterMaterializedViewStatement.java @@ -20,6 +20,7 @@ package org.apache.cassandra.cql3.statements; import org.apache.cassandra.auth.Permission; import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.cql3.CFName; +import org.apache.cassandra.db.view.MaterializedView; import org.apache.cassandra.exceptions.InvalidRequestException; import org.apache.cassandra.exceptions.RequestValidationException; import org.apache.cassandra.exceptions.UnauthorizedException; @@ -41,7 +42,9 @@ public class AlterMaterializedViewStatement extends SchemaAlteringStatement public void checkAccess(ClientState state) throws UnauthorizedException, InvalidRequestException { -state.hasColumnFamilyAccess(keyspace(), columnFamily(), Permission.ALTER); +CFMetaData baseTable = MaterializedView.findBaseTable(keyspace(), columnFamily()); +if (baseTable != null) +state.hasColumnFamilyAccess(keyspace(), baseTable.cfName, Permission.ALTER); } public void validate(ClientState state) http://git-wip-us.apache.org/repos/asf/cassandra/blob/1a9286c0/src/java/org/apache/cassandra/cql3/statements/CreateMaterializedViewStatement.java -- diff --git a/src/java/org/apache/cassandra/cql3/statements/CreateMaterializedViewStatement.java b/src/java/org/apache/cassandra/cql3/statements/CreateMaterializedViewStatement.java index 380b068..ec9e848 100644 --- a/src/java/org/apache/cassandra/cql3/statements/CreateMaterializedViewStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/CreateMaterializedViewStatement.java @@ -76,7 +76,7 @@ public class CreateMaterializedViewStatement extends SchemaAlteringStatement { if (!baseName.hasKeyspace()) baseName.setKeyspace(keyspace(), true); -state.hasKeyspaceAccess(keyspace(), Permission.CREATE); +state.hasColumnFamilyAccess(keyspace(), baseName.getColumnFamily(), Permission.ALTER); } public void validate(ClientState state) throws RequestValidationException http://git-wip-us.apache.org/repos/asf/cassandra/blob/1a9286c0/src/java/org/apache/cassandra/cql3/statements/DropMaterializedViewStatement.java -- diff --git a/src/java/org/apache/cassandra/cql3/statements/DropMaterializedViewStatement.java b/src/java/org/apache/cassandra/cql3/statements/DropMaterializedViewStatement.java index 01d138c..8adba45 100644 --- a/src/java/org/apache/cassandra/cql3/stateme
cassandra git commit: Fix CHANGES.txt
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 67269f699 -> 72acd6ba9 Fix CHANGES.txt Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/72acd6ba Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/72acd6ba Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/72acd6ba Branch: refs/heads/cassandra-3.0 Commit: 72acd6ba9e9effcd2b1c3c6fc4b8537d9fd5d70c Parents: 67269f6 Author: Aleksey Yeschenko Authored: Tue Aug 11 21:40:30 2015 +0300 Committer: Aleksey Yeschenko Committed: Tue Aug 11 21:40:30 2015 +0300 -- CHANGES.txt | 1 - 1 file changed, 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/72acd6ba/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index b817cfd..d7e84bf 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -9,7 +9,6 @@ * Optimize batchlog replay to avoid full scans (CASSANDRA-7237) * Repair improvements when using vnodes (CASSANDRA-5220) * Disable scripted UDFs by default (CASSANDRA-9889) - * Add transparent data encryption core classes (CASSANDRA-9945) * Bytecode inspection for Java-UDFs (CASSANDRA-9890) * Use byte to serialize MT hash length (CASSANDRA-9792) * Replace usage of Adler32 with CRC32 (CASSANDRA-8684)
[2/2] cassandra git commit: Merge branch 'cassandra-3.0' into trunk
Merge branch 'cassandra-3.0' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/3462a23d Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3462a23d Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3462a23d Branch: refs/heads/trunk Commit: 3462a23dc2e2492f6a94ba131a16e4bce31b4b25 Parents: d9e9c94 72acd6b Author: Aleksey Yeschenko Authored: Tue Aug 11 21:40:52 2015 +0300 Committer: Aleksey Yeschenko Committed: Tue Aug 11 21:42:34 2015 +0300 -- CHANGES.txt | 5 - 1 file changed, 4 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/3462a23d/CHANGES.txt -- diff --cc CHANGES.txt index b817cfd,d7e84bf..0ebc6d5 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,3 -1,3 +1,7 @@@ ++3.2 ++ * Add transparent data encryption core classes (CASSANDRA-9945) ++ ++ 3.0.0-beta1 * Add option to only purge repaired tombstones (CASSANDRA-6434) * Change authorization handling for MVs (CASSANDRA-9927)
[1/2] cassandra git commit: Fix CHANGES.txt
Repository: cassandra Updated Branches: refs/heads/trunk d9e9c948d -> 3462a23dc Fix CHANGES.txt Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/72acd6ba Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/72acd6ba Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/72acd6ba Branch: refs/heads/trunk Commit: 72acd6ba9e9effcd2b1c3c6fc4b8537d9fd5d70c Parents: 67269f6 Author: Aleksey Yeschenko Authored: Tue Aug 11 21:40:30 2015 +0300 Committer: Aleksey Yeschenko Committed: Tue Aug 11 21:40:30 2015 +0300 -- CHANGES.txt | 1 - 1 file changed, 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/72acd6ba/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index b817cfd..d7e84bf 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -9,7 +9,6 @@ * Optimize batchlog replay to avoid full scans (CASSANDRA-7237) * Repair improvements when using vnodes (CASSANDRA-5220) * Disable scripted UDFs by default (CASSANDRA-9889) - * Add transparent data encryption core classes (CASSANDRA-9945) * Bytecode inspection for Java-UDFs (CASSANDRA-9890) * Use byte to serialize MT hash length (CASSANDRA-9792) * Replace usage of Adler32 with CRC32 (CASSANDRA-8684)
cassandra git commit: Follow-up to CASSANDRA-9265
Repository: cassandra Updated Branches: refs/heads/cassandra-2.2 5c88651a4 -> 85d550f94 Follow-up to CASSANDRA-9265 patch by Aleksey Yeschenko Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/85d550f9 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/85d550f9 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/85d550f9 Branch: refs/heads/cassandra-2.2 Commit: 85d550f9460ce763acb97ad0740f6ea495f911d3 Parents: 5c88651 Author: Aleksey Yeschenko Authored: Thu Aug 13 01:48:01 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Aug 13 01:48:07 2015 +0300 -- .../io/util/ChecksummedRandomAccessReader.java | 17 +++-- 1 file changed, 11 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/85d550f9/src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java -- diff --git a/src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java b/src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java index 60b193a..442236d 100644 --- a/src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java +++ b/src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.apache.cassandra.io.util; import java.io.File; @@ -32,7 +31,9 @@ public class ChecksummedRandomAccessReader extends RandomAccessReader { public final File file; -public CorruptFileException(Exception cause, File file) { +public CorruptFileException(Exception cause, File file) +{ +super(cause); this.file = file; } } @@ -40,7 +41,8 @@ public class ChecksummedRandomAccessReader extends RandomAccessReader private final DataIntegrityMetadata.ChecksumValidator validator; private final File file; -protected ChecksummedRandomAccessReader(File file, ChannelProxy channel, DataIntegrityMetadata.ChecksumValidator validator) throws IOException { +protected ChecksummedRandomAccessReader(File file, ChannelProxy channel, DataIntegrityMetadata.ChecksumValidator validator) +{ super(channel, validator.chunkSize, -1, BufferType.ON_HEAP, null); this.validator = validator; this.file = file; @@ -51,13 +53,14 @@ public class ChecksummedRandomAccessReader extends RandomAccessReader try (ChannelProxy channel = new ChannelProxy(file)) { RandomAccessReader crcReader = RandomAccessReader.open(crcFile); -DataIntegrityMetadata.ChecksumValidator validator = new DataIntegrityMetadata.ChecksumValidator(new Adler32(), - crcReader, - file.getPath()); +@SuppressWarnings("resource") +DataIntegrityMetadata.ChecksumValidator validator = +new DataIntegrityMetadata.ChecksumValidator(new Adler32(), crcReader, file.getPath()); return new ChecksummedRandomAccessReader(file, channel, validator); } } +@Override protected void reBuffer() { long desiredPosition = current(); @@ -89,12 +92,14 @@ public class ChecksummedRandomAccessReader extends RandomAccessReader buffer.position((int) (desiredPosition - bufferOffset)); } +@Override public void seek(long newPosition) { validator.seek(newPosition); super.seek(newPosition); } +@Override public void close() { super.close();
[3/3] cassandra git commit: Merge branch 'cassandra-3.0' into trunk
Merge branch 'cassandra-3.0' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/ac61af8e Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/ac61af8e Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/ac61af8e Branch: refs/heads/trunk Commit: ac61af8e3d85dd8ecdb4642ed64c27bcf7b2b89a Parents: bfd2e08 0ff2a5b Author: Aleksey Yeschenko Authored: Thu Aug 13 01:50:37 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Aug 13 01:50:37 2015 +0300 -- .../io/util/ChecksummedRandomAccessReader.java | 13 - 1 file changed, 8 insertions(+), 5 deletions(-) --
[2/2] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0
Merge branch 'cassandra-2.2' into cassandra-3.0 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/0ff2a5b7 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/0ff2a5b7 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/0ff2a5b7 Branch: refs/heads/cassandra-3.0 Commit: 0ff2a5b712363dae742807005f11bb03201b4237 Parents: e51f83b 85d550f Author: Aleksey Yeschenko Authored: Thu Aug 13 01:50:17 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Aug 13 01:50:17 2015 +0300 -- .../io/util/ChecksummedRandomAccessReader.java | 13 - 1 file changed, 8 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/0ff2a5b7/src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java -- diff --cc src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java index 3fc247b,442236d..98869a1 --- a/src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java +++ b/src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java @@@ -41,23 -41,26 +41,24 @@@ public class ChecksummedRandomAccessRea private final DataIntegrityMetadata.ChecksumValidator validator; private final File file; - protected ChecksummedRandomAccessReader(File file, ChannelProxy channel, DataIntegrityMetadata.ChecksumValidator validator) throws IOException + protected ChecksummedRandomAccessReader(File file, ChannelProxy channel, DataIntegrityMetadata.ChecksumValidator validator) { -super(channel, validator.chunkSize, -1, BufferType.ON_HEAP, null); +super(channel, validator.chunkSize, -1, BufferType.ON_HEAP); this.validator = validator; this.file = file; } ++@SuppressWarnings("resource") public static ChecksummedRandomAccessReader open(File file, File crcFile) throws IOException { -try (ChannelProxy channel = new ChannelProxy(file)) -{ -RandomAccessReader crcReader = RandomAccessReader.open(crcFile); -@SuppressWarnings("resource") -DataIntegrityMetadata.ChecksumValidator validator = -new DataIntegrityMetadata.ChecksumValidator(new Adler32(), crcReader, file.getPath()); -return new ChecksummedRandomAccessReader(file, channel, validator); -} +ChannelProxy channel = new ChannelProxy(file); +RandomAccessReader crcReader = RandomAccessReader.open(crcFile); - DataIntegrityMetadata.ChecksumValidator validator = new DataIntegrityMetadata.ChecksumValidator(new CRC32(), - crcReader, - file.getPath()); ++DataIntegrityMetadata.ChecksumValidator validator = ++new DataIntegrityMetadata.ChecksumValidator(new CRC32(), crcReader, file.getPath()); +return new ChecksummedRandomAccessReader(file, channel, validator); } + @Override protected void reBuffer() { long desiredPosition = current(); @@@ -95,16 -99,10 +97,17 @@@ super.seek(newPosition); } + @Override public void close() { -super.close(); -validator.close(); +try +{ +super.close(); +} +finally +{ +channel.close(); +validator.close(); +} } }
[2/3] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0
Merge branch 'cassandra-2.2' into cassandra-3.0 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/0ff2a5b7 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/0ff2a5b7 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/0ff2a5b7 Branch: refs/heads/trunk Commit: 0ff2a5b712363dae742807005f11bb03201b4237 Parents: e51f83b 85d550f Author: Aleksey Yeschenko Authored: Thu Aug 13 01:50:17 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Aug 13 01:50:17 2015 +0300 -- .../io/util/ChecksummedRandomAccessReader.java | 13 - 1 file changed, 8 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/0ff2a5b7/src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java -- diff --cc src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java index 3fc247b,442236d..98869a1 --- a/src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java +++ b/src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java @@@ -41,23 -41,26 +41,24 @@@ public class ChecksummedRandomAccessRea private final DataIntegrityMetadata.ChecksumValidator validator; private final File file; - protected ChecksummedRandomAccessReader(File file, ChannelProxy channel, DataIntegrityMetadata.ChecksumValidator validator) throws IOException + protected ChecksummedRandomAccessReader(File file, ChannelProxy channel, DataIntegrityMetadata.ChecksumValidator validator) { -super(channel, validator.chunkSize, -1, BufferType.ON_HEAP, null); +super(channel, validator.chunkSize, -1, BufferType.ON_HEAP); this.validator = validator; this.file = file; } ++@SuppressWarnings("resource") public static ChecksummedRandomAccessReader open(File file, File crcFile) throws IOException { -try (ChannelProxy channel = new ChannelProxy(file)) -{ -RandomAccessReader crcReader = RandomAccessReader.open(crcFile); -@SuppressWarnings("resource") -DataIntegrityMetadata.ChecksumValidator validator = -new DataIntegrityMetadata.ChecksumValidator(new Adler32(), crcReader, file.getPath()); -return new ChecksummedRandomAccessReader(file, channel, validator); -} +ChannelProxy channel = new ChannelProxy(file); +RandomAccessReader crcReader = RandomAccessReader.open(crcFile); - DataIntegrityMetadata.ChecksumValidator validator = new DataIntegrityMetadata.ChecksumValidator(new CRC32(), - crcReader, - file.getPath()); ++DataIntegrityMetadata.ChecksumValidator validator = ++new DataIntegrityMetadata.ChecksumValidator(new CRC32(), crcReader, file.getPath()); +return new ChecksummedRandomAccessReader(file, channel, validator); } + @Override protected void reBuffer() { long desiredPosition = current(); @@@ -95,16 -99,10 +97,17 @@@ super.seek(newPosition); } + @Override public void close() { -super.close(); -validator.close(); +try +{ +super.close(); +} +finally +{ +channel.close(); +validator.close(); +} } }
[1/3] cassandra git commit: Follow-up to CASSANDRA-9265
Repository: cassandra Updated Branches: refs/heads/trunk bfd2e0820 -> ac61af8e3 Follow-up to CASSANDRA-9265 patch by Aleksey Yeschenko Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/85d550f9 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/85d550f9 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/85d550f9 Branch: refs/heads/trunk Commit: 85d550f9460ce763acb97ad0740f6ea495f911d3 Parents: 5c88651 Author: Aleksey Yeschenko Authored: Thu Aug 13 01:48:01 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Aug 13 01:48:07 2015 +0300 -- .../io/util/ChecksummedRandomAccessReader.java | 17 +++-- 1 file changed, 11 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/85d550f9/src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java -- diff --git a/src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java b/src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java index 60b193a..442236d 100644 --- a/src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java +++ b/src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.apache.cassandra.io.util; import java.io.File; @@ -32,7 +31,9 @@ public class ChecksummedRandomAccessReader extends RandomAccessReader { public final File file; -public CorruptFileException(Exception cause, File file) { +public CorruptFileException(Exception cause, File file) +{ +super(cause); this.file = file; } } @@ -40,7 +41,8 @@ public class ChecksummedRandomAccessReader extends RandomAccessReader private final DataIntegrityMetadata.ChecksumValidator validator; private final File file; -protected ChecksummedRandomAccessReader(File file, ChannelProxy channel, DataIntegrityMetadata.ChecksumValidator validator) throws IOException { +protected ChecksummedRandomAccessReader(File file, ChannelProxy channel, DataIntegrityMetadata.ChecksumValidator validator) +{ super(channel, validator.chunkSize, -1, BufferType.ON_HEAP, null); this.validator = validator; this.file = file; @@ -51,13 +53,14 @@ public class ChecksummedRandomAccessReader extends RandomAccessReader try (ChannelProxy channel = new ChannelProxy(file)) { RandomAccessReader crcReader = RandomAccessReader.open(crcFile); -DataIntegrityMetadata.ChecksumValidator validator = new DataIntegrityMetadata.ChecksumValidator(new Adler32(), - crcReader, - file.getPath()); +@SuppressWarnings("resource") +DataIntegrityMetadata.ChecksumValidator validator = +new DataIntegrityMetadata.ChecksumValidator(new Adler32(), crcReader, file.getPath()); return new ChecksummedRandomAccessReader(file, channel, validator); } } +@Override protected void reBuffer() { long desiredPosition = current(); @@ -89,12 +92,14 @@ public class ChecksummedRandomAccessReader extends RandomAccessReader buffer.position((int) (desiredPosition - bufferOffset)); } +@Override public void seek(long newPosition) { validator.seek(newPosition); super.seek(newPosition); } +@Override public void close() { super.close();
[1/2] cassandra git commit: Follow-up to CASSANDRA-9265
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 e51f83b60 -> 0ff2a5b71 Follow-up to CASSANDRA-9265 patch by Aleksey Yeschenko Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/85d550f9 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/85d550f9 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/85d550f9 Branch: refs/heads/cassandra-3.0 Commit: 85d550f9460ce763acb97ad0740f6ea495f911d3 Parents: 5c88651 Author: Aleksey Yeschenko Authored: Thu Aug 13 01:48:01 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Aug 13 01:48:07 2015 +0300 -- .../io/util/ChecksummedRandomAccessReader.java | 17 +++-- 1 file changed, 11 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/85d550f9/src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java -- diff --git a/src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java b/src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java index 60b193a..442236d 100644 --- a/src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java +++ b/src/java/org/apache/cassandra/io/util/ChecksummedRandomAccessReader.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.apache.cassandra.io.util; import java.io.File; @@ -32,7 +31,9 @@ public class ChecksummedRandomAccessReader extends RandomAccessReader { public final File file; -public CorruptFileException(Exception cause, File file) { +public CorruptFileException(Exception cause, File file) +{ +super(cause); this.file = file; } } @@ -40,7 +41,8 @@ public class ChecksummedRandomAccessReader extends RandomAccessReader private final DataIntegrityMetadata.ChecksumValidator validator; private final File file; -protected ChecksummedRandomAccessReader(File file, ChannelProxy channel, DataIntegrityMetadata.ChecksumValidator validator) throws IOException { +protected ChecksummedRandomAccessReader(File file, ChannelProxy channel, DataIntegrityMetadata.ChecksumValidator validator) +{ super(channel, validator.chunkSize, -1, BufferType.ON_HEAP, null); this.validator = validator; this.file = file; @@ -51,13 +53,14 @@ public class ChecksummedRandomAccessReader extends RandomAccessReader try (ChannelProxy channel = new ChannelProxy(file)) { RandomAccessReader crcReader = RandomAccessReader.open(crcFile); -DataIntegrityMetadata.ChecksumValidator validator = new DataIntegrityMetadata.ChecksumValidator(new Adler32(), - crcReader, - file.getPath()); +@SuppressWarnings("resource") +DataIntegrityMetadata.ChecksumValidator validator = +new DataIntegrityMetadata.ChecksumValidator(new Adler32(), crcReader, file.getPath()); return new ChecksummedRandomAccessReader(file, channel, validator); } } +@Override protected void reBuffer() { long desiredPosition = current(); @@ -89,12 +92,14 @@ public class ChecksummedRandomAccessReader extends RandomAccessReader buffer.position((int) (desiredPosition - bufferOffset)); } +@Override public void seek(long newPosition) { validator.seek(newPosition); super.seek(newPosition); } +@Override public void close() { super.close();
cassandra git commit: Improve assertions around some of the usage of AbstractBounds
Repository: cassandra Updated Branches: refs/heads/cassandra-2.2 10be826e7 -> 3aa7308e8 Improve assertions around some of the usage of AbstractBounds patch by Sylvain Lebresne and Ariel Weisberg; reviewed by Aleksey Yeschenko for CASSANDRA-9462 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/3aa7308e Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3aa7308e Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3aa7308e Branch: refs/heads/cassandra-2.2 Commit: 3aa7308e8f86969158c8d919c3f77658ae7c4fc3 Parents: 10be826 Author: Sylvain Lebresne Authored: Wed Aug 12 16:34:07 2015 -0400 Committer: Aleksey Yeschenko Committed: Fri Aug 14 21:20:17 2015 +0300 -- .../apache/cassandra/db/ColumnFamilyStore.java | 18 +++--- .../cassandra/db/SizeEstimatesRecorder.java | 3 ++- .../org/apache/cassandra/db/lifecycle/View.java | 13 +++--- .../apache/cassandra/dht/AbstractBounds.java| 25 src/java/org/apache/cassandra/dht/Bounds.java | 2 +- .../apache/cassandra/dht/ExcludingBounds.java | 2 +- .../cassandra/dht/IncludingExcludingBounds.java | 2 +- .../cassandra/streaming/StreamSession.java | 19 --- .../apache/cassandra/db/lifecycle/ViewTest.java | 7 +++--- 9 files changed, 70 insertions(+), 21 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/3aa7308e/src/java/org/apache/cassandra/db/ColumnFamilyStore.java -- diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java index 482e3ee..8bda6b2 100644 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@ -1929,11 +1929,17 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean */ public Function> viewFilter(final AbstractBounds rowBounds) { +assert !AbstractBounds.strictlyWrapsAround(rowBounds.left, rowBounds.right); return new Function>() { public List apply(View view) { -return compactionStrategyWrapper.filterSSTablesForReads(view.sstablesInBounds(rowBounds)); +// Note that View.sstablesInBounds always includes it's bound while rowBounds may not. This is ok however +// because the fact we restrict the sstables returned by this function is an optimization in the first +// place and the returned sstables will (almost) never cover *exactly* rowBounds anyway. It's also +// *very* unlikely that a sstable is included *just* because we consider one of the bound inclusively +// instead of exclusively, so the performance impact is negligible in practice. +return view.sstablesInBounds(rowBounds.left, rowBounds.right); } }; } @@ -1944,6 +1950,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean */ public Function> viewFilter(final Collection> rowBoundsCollection, final boolean includeRepaired) { +assert AbstractBounds.noneStrictlyWrapsAround(rowBoundsCollection); return new Function>() { public List apply(View view) @@ -1951,7 +1958,12 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean Set sstables = Sets.newHashSet(); for (AbstractBounds rowBounds : rowBoundsCollection) { -for (SSTableReader sstable : view.sstablesInBounds(rowBounds)) +// Note that View.sstablesInBounds always includes it's bound while rowBounds may not. This is ok however +// because the fact we restrict the sstables returned by this function is an optimization in the first +// place and the returned sstables will (almost) never cover *exactly* rowBounds anyway. It's also +// *very* unlikely that a sstable is included *just* because we consider one of the bound inclusively +// instead of exclusively, so the performance impact is negligible in practice. +for (SSTableReader sstable : view.sstablesInBounds(rowBounds.left, rowBounds.right)) { if (includeRepaired || !sstable.isRepaired()) sstables.add(sstable); @@ -2335,7 +2347,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { if (!manifestFile.getParentFile().exists()) manifestFile.getParentFile().mkdirs(); - + try (PrintStr
[2/2] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0
Merge branch 'cassandra-2.2' into cassandra-3.0 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/99e0c907 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/99e0c907 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/99e0c907 Branch: refs/heads/cassandra-3.0 Commit: 99e0c907eabc26f876f984daf33fdc2d3ab66a24 Parents: 507ed14 3aa7308 Author: Aleksey Yeschenko Authored: Fri Aug 14 21:27:08 2015 +0300 Committer: Aleksey Yeschenko Committed: Fri Aug 14 21:27:08 2015 +0300 -- .../apache/cassandra/db/ColumnFamilyStore.java | 2 +- .../cassandra/db/SizeEstimatesRecorder.java | 3 ++- .../org/apache/cassandra/db/lifecycle/View.java | 20 .../apache/cassandra/dht/AbstractBounds.java| 25 src/java/org/apache/cassandra/dht/Bounds.java | 2 +- .../apache/cassandra/dht/ExcludingBounds.java | 2 +- .../cassandra/dht/IncludingExcludingBounds.java | 2 +- .../cassandra/streaming/StreamSession.java | 16 + .../apache/cassandra/db/lifecycle/ViewTest.java | 8 --- 9 files changed, 63 insertions(+), 17 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/99e0c907/src/java/org/apache/cassandra/db/ColumnFamilyStore.java -- diff --cc src/java/org/apache/cassandra/db/ColumnFamilyStore.java index 797e2c7,8bda6b2..8d72ecf --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@@ -1179,7 -1394,7 +1179,7 @@@ public class ColumnFamilyStore implemen Set results = null; for (SSTableReader sstable : sstables) { - Set overlaps = ImmutableSet.copyOf(view.sstablesInBounds(sstableSet, AbstractBounds.bounds(sstable.first, true, sstable.last, true))); -Set overlaps = ImmutableSet.copyOf(tree.search(Interval.create(sstable.first, sstable.last))); ++Set overlaps = ImmutableSet.copyOf(view.sstablesInBounds(sstableSet, sstable.first, sstable.last)); results = results == null ? overlaps : Sets.union(results, overlaps).immutableCopy(); } results = Sets.difference(results, ImmutableSet.copyOf(sstables)); http://git-wip-us.apache.org/repos/asf/cassandra/blob/99e0c907/src/java/org/apache/cassandra/db/SizeEstimatesRecorder.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/99e0c907/src/java/org/apache/cassandra/db/lifecycle/View.java -- diff --cc src/java/org/apache/cassandra/db/lifecycle/View.java index 75590fa,73ba131..7ee0fdf --- a/src/java/org/apache/cassandra/db/lifecycle/View.java +++ b/src/java/org/apache/cassandra/db/lifecycle/View.java @@@ -176,41 -126,19 +176,53 @@@ public class Vie return String.format("View(pending_count=%d, sstables=%s, compacting=%s)", liveMemtables.size() + flushingMemtables.size() - 1, sstables, compacting); } - public Iterable sstablesInBounds(SSTableSet sstableSet, AbstractBounds rowBounds) + /** - * Returns the sstables that have any partition between {@code left} and {@code right}, when both bounds are taken inclusively. - * The interval formed by {@code left} and {@code right} shouldn't wrap. - */ -public List sstablesInBounds(RowPosition left, RowPosition right) ++ * Returns the sstables that have any partition between {@code left} and {@code right}, when both bounds are taken inclusively. ++ * The interval formed by {@code left} and {@code right} shouldn't wrap. ++ */ ++public Iterable sstablesInBounds(SSTableSet sstableSet, PartitionPosition left, PartitionPosition right) { + assert !AbstractBounds.strictlyWrapsAround(left, right); + if (intervalTree.isEmpty()) return Collections.emptyList(); - PartitionPosition stopInTree = rowBounds.right.isMinimum() ? intervalTree.max() : rowBounds.right; - return select(sstableSet, intervalTree.search(Interval.create(rowBounds.left, stopInTree))); + -RowPosition stopInTree = right.isMinimum() ? intervalTree.max() : right; -return intervalTree.search(Interval.create(left, stopInTree)); ++PartitionPosition stopInTree = right.isMinimum() ? intervalTree.max() : right; ++return select(sstableSet, intervalTree.search(Interval.create(left, stopInTree))); +} + +public static Function> select(SSTableSet sstableSet) +{ +return (view) -> view.sstables(sstableSet); +} + +public static Function> select(SSTableSet sstableSet, Pre
[1/2] cassandra git commit: Improve assertions around some of the usage of AbstractBounds
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 507ed1484 -> 99e0c907e Improve assertions around some of the usage of AbstractBounds patch by Sylvain Lebresne and Ariel Weisberg; reviewed by Aleksey Yeschenko for CASSANDRA-9462 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/3aa7308e Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3aa7308e Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3aa7308e Branch: refs/heads/cassandra-3.0 Commit: 3aa7308e8f86969158c8d919c3f77658ae7c4fc3 Parents: 10be826 Author: Sylvain Lebresne Authored: Wed Aug 12 16:34:07 2015 -0400 Committer: Aleksey Yeschenko Committed: Fri Aug 14 21:20:17 2015 +0300 -- .../apache/cassandra/db/ColumnFamilyStore.java | 18 +++--- .../cassandra/db/SizeEstimatesRecorder.java | 3 ++- .../org/apache/cassandra/db/lifecycle/View.java | 13 +++--- .../apache/cassandra/dht/AbstractBounds.java| 25 src/java/org/apache/cassandra/dht/Bounds.java | 2 +- .../apache/cassandra/dht/ExcludingBounds.java | 2 +- .../cassandra/dht/IncludingExcludingBounds.java | 2 +- .../cassandra/streaming/StreamSession.java | 19 --- .../apache/cassandra/db/lifecycle/ViewTest.java | 7 +++--- 9 files changed, 70 insertions(+), 21 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/3aa7308e/src/java/org/apache/cassandra/db/ColumnFamilyStore.java -- diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java index 482e3ee..8bda6b2 100644 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@ -1929,11 +1929,17 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean */ public Function> viewFilter(final AbstractBounds rowBounds) { +assert !AbstractBounds.strictlyWrapsAround(rowBounds.left, rowBounds.right); return new Function>() { public List apply(View view) { -return compactionStrategyWrapper.filterSSTablesForReads(view.sstablesInBounds(rowBounds)); +// Note that View.sstablesInBounds always includes it's bound while rowBounds may not. This is ok however +// because the fact we restrict the sstables returned by this function is an optimization in the first +// place and the returned sstables will (almost) never cover *exactly* rowBounds anyway. It's also +// *very* unlikely that a sstable is included *just* because we consider one of the bound inclusively +// instead of exclusively, so the performance impact is negligible in practice. +return view.sstablesInBounds(rowBounds.left, rowBounds.right); } }; } @@ -1944,6 +1950,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean */ public Function> viewFilter(final Collection> rowBoundsCollection, final boolean includeRepaired) { +assert AbstractBounds.noneStrictlyWrapsAround(rowBoundsCollection); return new Function>() { public List apply(View view) @@ -1951,7 +1958,12 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean Set sstables = Sets.newHashSet(); for (AbstractBounds rowBounds : rowBoundsCollection) { -for (SSTableReader sstable : view.sstablesInBounds(rowBounds)) +// Note that View.sstablesInBounds always includes it's bound while rowBounds may not. This is ok however +// because the fact we restrict the sstables returned by this function is an optimization in the first +// place and the returned sstables will (almost) never cover *exactly* rowBounds anyway. It's also +// *very* unlikely that a sstable is included *just* because we consider one of the bound inclusively +// instead of exclusively, so the performance impact is negligible in practice. +for (SSTableReader sstable : view.sstablesInBounds(rowBounds.left, rowBounds.right)) { if (includeRepaired || !sstable.isRepaired()) sstables.add(sstable); @@ -2335,7 +2347,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { if (!manifestFile.getParentFile().exists()) manifestFile.getParentFile().mkdirs(); - + try (PrintStr
[1/3] cassandra git commit: Improve assertions around some of the usage of AbstractBounds
Repository: cassandra Updated Branches: refs/heads/trunk 7a4226f0c -> 45faed014 Improve assertions around some of the usage of AbstractBounds patch by Sylvain Lebresne and Ariel Weisberg; reviewed by Aleksey Yeschenko for CASSANDRA-9462 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/3aa7308e Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3aa7308e Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3aa7308e Branch: refs/heads/trunk Commit: 3aa7308e8f86969158c8d919c3f77658ae7c4fc3 Parents: 10be826 Author: Sylvain Lebresne Authored: Wed Aug 12 16:34:07 2015 -0400 Committer: Aleksey Yeschenko Committed: Fri Aug 14 21:20:17 2015 +0300 -- .../apache/cassandra/db/ColumnFamilyStore.java | 18 +++--- .../cassandra/db/SizeEstimatesRecorder.java | 3 ++- .../org/apache/cassandra/db/lifecycle/View.java | 13 +++--- .../apache/cassandra/dht/AbstractBounds.java| 25 src/java/org/apache/cassandra/dht/Bounds.java | 2 +- .../apache/cassandra/dht/ExcludingBounds.java | 2 +- .../cassandra/dht/IncludingExcludingBounds.java | 2 +- .../cassandra/streaming/StreamSession.java | 19 --- .../apache/cassandra/db/lifecycle/ViewTest.java | 7 +++--- 9 files changed, 70 insertions(+), 21 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/3aa7308e/src/java/org/apache/cassandra/db/ColumnFamilyStore.java -- diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java index 482e3ee..8bda6b2 100644 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@ -1929,11 +1929,17 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean */ public Function> viewFilter(final AbstractBounds rowBounds) { +assert !AbstractBounds.strictlyWrapsAround(rowBounds.left, rowBounds.right); return new Function>() { public List apply(View view) { -return compactionStrategyWrapper.filterSSTablesForReads(view.sstablesInBounds(rowBounds)); +// Note that View.sstablesInBounds always includes it's bound while rowBounds may not. This is ok however +// because the fact we restrict the sstables returned by this function is an optimization in the first +// place and the returned sstables will (almost) never cover *exactly* rowBounds anyway. It's also +// *very* unlikely that a sstable is included *just* because we consider one of the bound inclusively +// instead of exclusively, so the performance impact is negligible in practice. +return view.sstablesInBounds(rowBounds.left, rowBounds.right); } }; } @@ -1944,6 +1950,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean */ public Function> viewFilter(final Collection> rowBoundsCollection, final boolean includeRepaired) { +assert AbstractBounds.noneStrictlyWrapsAround(rowBoundsCollection); return new Function>() { public List apply(View view) @@ -1951,7 +1958,12 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean Set sstables = Sets.newHashSet(); for (AbstractBounds rowBounds : rowBoundsCollection) { -for (SSTableReader sstable : view.sstablesInBounds(rowBounds)) +// Note that View.sstablesInBounds always includes it's bound while rowBounds may not. This is ok however +// because the fact we restrict the sstables returned by this function is an optimization in the first +// place and the returned sstables will (almost) never cover *exactly* rowBounds anyway. It's also +// *very* unlikely that a sstable is included *just* because we consider one of the bound inclusively +// instead of exclusively, so the performance impact is negligible in practice. +for (SSTableReader sstable : view.sstablesInBounds(rowBounds.left, rowBounds.right)) { if (includeRepaired || !sstable.isRepaired()) sstables.add(sstable); @@ -2335,7 +2347,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { if (!manifestFile.getParentFile().exists()) manifestFile.getParentFile().mkdirs(); - + try (PrintStr
[2/3] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0
Merge branch 'cassandra-2.2' into cassandra-3.0 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/99e0c907 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/99e0c907 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/99e0c907 Branch: refs/heads/trunk Commit: 99e0c907eabc26f876f984daf33fdc2d3ab66a24 Parents: 507ed14 3aa7308 Author: Aleksey Yeschenko Authored: Fri Aug 14 21:27:08 2015 +0300 Committer: Aleksey Yeschenko Committed: Fri Aug 14 21:27:08 2015 +0300 -- .../apache/cassandra/db/ColumnFamilyStore.java | 2 +- .../cassandra/db/SizeEstimatesRecorder.java | 3 ++- .../org/apache/cassandra/db/lifecycle/View.java | 20 .../apache/cassandra/dht/AbstractBounds.java| 25 src/java/org/apache/cassandra/dht/Bounds.java | 2 +- .../apache/cassandra/dht/ExcludingBounds.java | 2 +- .../cassandra/dht/IncludingExcludingBounds.java | 2 +- .../cassandra/streaming/StreamSession.java | 16 + .../apache/cassandra/db/lifecycle/ViewTest.java | 8 --- 9 files changed, 63 insertions(+), 17 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/99e0c907/src/java/org/apache/cassandra/db/ColumnFamilyStore.java -- diff --cc src/java/org/apache/cassandra/db/ColumnFamilyStore.java index 797e2c7,8bda6b2..8d72ecf --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@@ -1179,7 -1394,7 +1179,7 @@@ public class ColumnFamilyStore implemen Set results = null; for (SSTableReader sstable : sstables) { - Set overlaps = ImmutableSet.copyOf(view.sstablesInBounds(sstableSet, AbstractBounds.bounds(sstable.first, true, sstable.last, true))); -Set overlaps = ImmutableSet.copyOf(tree.search(Interval.create(sstable.first, sstable.last))); ++Set overlaps = ImmutableSet.copyOf(view.sstablesInBounds(sstableSet, sstable.first, sstable.last)); results = results == null ? overlaps : Sets.union(results, overlaps).immutableCopy(); } results = Sets.difference(results, ImmutableSet.copyOf(sstables)); http://git-wip-us.apache.org/repos/asf/cassandra/blob/99e0c907/src/java/org/apache/cassandra/db/SizeEstimatesRecorder.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/99e0c907/src/java/org/apache/cassandra/db/lifecycle/View.java -- diff --cc src/java/org/apache/cassandra/db/lifecycle/View.java index 75590fa,73ba131..7ee0fdf --- a/src/java/org/apache/cassandra/db/lifecycle/View.java +++ b/src/java/org/apache/cassandra/db/lifecycle/View.java @@@ -176,41 -126,19 +176,53 @@@ public class Vie return String.format("View(pending_count=%d, sstables=%s, compacting=%s)", liveMemtables.size() + flushingMemtables.size() - 1, sstables, compacting); } - public Iterable sstablesInBounds(SSTableSet sstableSet, AbstractBounds rowBounds) + /** - * Returns the sstables that have any partition between {@code left} and {@code right}, when both bounds are taken inclusively. - * The interval formed by {@code left} and {@code right} shouldn't wrap. - */ -public List sstablesInBounds(RowPosition left, RowPosition right) ++ * Returns the sstables that have any partition between {@code left} and {@code right}, when both bounds are taken inclusively. ++ * The interval formed by {@code left} and {@code right} shouldn't wrap. ++ */ ++public Iterable sstablesInBounds(SSTableSet sstableSet, PartitionPosition left, PartitionPosition right) { + assert !AbstractBounds.strictlyWrapsAround(left, right); + if (intervalTree.isEmpty()) return Collections.emptyList(); - PartitionPosition stopInTree = rowBounds.right.isMinimum() ? intervalTree.max() : rowBounds.right; - return select(sstableSet, intervalTree.search(Interval.create(rowBounds.left, stopInTree))); + -RowPosition stopInTree = right.isMinimum() ? intervalTree.max() : right; -return intervalTree.search(Interval.create(left, stopInTree)); ++PartitionPosition stopInTree = right.isMinimum() ? intervalTree.max() : right; ++return select(sstableSet, intervalTree.search(Interval.create(left, stopInTree))); +} + +public static Function> select(SSTableSet sstableSet) +{ +return (view) -> view.sstables(sstableSet); +} + +public static Function> select(SSTableSet sstableSet, Predicate
[3/3] cassandra git commit: Merge branch 'cassandra-3.0' into trunk
Merge branch 'cassandra-3.0' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/45faed01 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/45faed01 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/45faed01 Branch: refs/heads/trunk Commit: 45faed0141add9e7a52c81f08a9e0ccc0d62d6c8 Parents: 7a4226f 99e0c90 Author: Aleksey Yeschenko Authored: Fri Aug 14 21:27:36 2015 +0300 Committer: Aleksey Yeschenko Committed: Fri Aug 14 21:27:36 2015 +0300 -- .../apache/cassandra/db/ColumnFamilyStore.java | 2 +- .../cassandra/db/SizeEstimatesRecorder.java | 3 ++- .../org/apache/cassandra/db/lifecycle/View.java | 20 .../apache/cassandra/dht/AbstractBounds.java| 25 src/java/org/apache/cassandra/dht/Bounds.java | 2 +- .../apache/cassandra/dht/ExcludingBounds.java | 2 +- .../cassandra/dht/IncludingExcludingBounds.java | 2 +- .../cassandra/streaming/StreamSession.java | 16 + .../apache/cassandra/db/lifecycle/ViewTest.java | 8 --- 9 files changed, 63 insertions(+), 17 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/45faed01/src/java/org/apache/cassandra/db/ColumnFamilyStore.java --
[2/4] cassandra git commit: Rewrite hinted handoff
http://git-wip-us.apache.org/repos/asf/cassandra/blob/96d41f0e/src/java/org/apache/cassandra/hints/HintsWriter.java -- diff --git a/src/java/org/apache/cassandra/hints/HintsWriter.java b/src/java/org/apache/cassandra/hints/HintsWriter.java new file mode 100644 index 000..300d9cc --- /dev/null +++ b/src/java/org/apache/cassandra/hints/HintsWriter.java @@ -0,0 +1,272 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.hints; + +import java.io.File; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.ByteBuffer; +import java.nio.channels.FileChannel; +import java.nio.file.Files; +import java.nio.file.StandardOpenOption; +import java.util.zip.CRC32; + +import org.apache.cassandra.config.DatabaseDescriptor; +import org.apache.cassandra.io.FSWriteError; +import org.apache.cassandra.io.util.DataOutputBuffer; +import org.apache.cassandra.io.util.DataOutputBufferFixed; +import org.apache.cassandra.utils.CLibrary; +import org.apache.cassandra.utils.SyncUtil; +import org.apache.cassandra.utils.Throwables; + +import static org.apache.cassandra.utils.FBUtilities.updateChecksum; +import static org.apache.cassandra.utils.FBUtilities.updateChecksumInt; +import static org.apache.cassandra.utils.Throwables.perform; + +final class HintsWriter implements AutoCloseable +{ +static final int PAGE_SIZE = 4096; + +private final File directory; +private final HintsDescriptor descriptor; +private final File file; +private final FileChannel channel; +private final int fd; +private final CRC32 globalCRC; + +private volatile long lastSyncPosition = 0L; + +private HintsWriter(File directory, HintsDescriptor descriptor, File file, FileChannel channel, int fd, CRC32 globalCRC) +{ +this.directory = directory; +this.descriptor = descriptor; +this.file = file; +this.channel = channel; +this.fd = fd; +this.globalCRC = globalCRC; +} + +static HintsWriter create(File directory, HintsDescriptor descriptor) throws IOException +{ +File file = new File(directory, descriptor.fileName()); + +FileChannel channel = FileChannel.open(file.toPath(), StandardOpenOption.WRITE, StandardOpenOption.CREATE_NEW); +int fd = CLibrary.getfd(channel); + +CRC32 crc = new CRC32(); + +try +{ +// write the descriptor +DataOutputBuffer dob = new DataOutputBuffer(); +descriptor.serialize(dob); +ByteBuffer descriptorBytes = dob.buffer(); +updateChecksum(crc, descriptorBytes); +channel.write(descriptorBytes); +} +catch (Throwable e) +{ +channel.close(); +throw e; +} + +return new HintsWriter(directory, descriptor, file, channel, fd, crc); +} + +HintsDescriptor descriptor() +{ +return descriptor; +} + +private void writeChecksum() +{ +File checksumFile = new File(directory, descriptor.checksumFileName()); +try (OutputStream out = Files.newOutputStream(checksumFile.toPath())) +{ +out.write(Integer.toHexString((int) globalCRC.getValue()).getBytes()); +} +catch (IOException e) +{ +throw new FSWriteError(e, checksumFile); +} +} + +public void close() +{ +perform(file, Throwables.FileOpType.WRITE, this::doFsync, channel::close); + +writeChecksum(); +} + +public void fsync() +{ +perform(file, Throwables.FileOpType.WRITE, this::doFsync); +} + +private void doFsync() throws IOException +{ +SyncUtil.force(channel, true); +lastSyncPosition = channel.position(); +} + +Session newSession(ByteBuffer buffer) +{ +try +{ +return new Session(buffer, channel.size()); +} +catch (IOException e) +{ +throw new FSWriteError(e, file); +} +} + +/** + * The primary goal of the Session class is to be able to share the same buffers among potentially dozens
[4/4] cassandra git commit: Rewrite hinted handoff
Rewrite hinted handoff patch by Aleksey Yeschenko; reviewed by Benedict Elliott Smith for CASSANDRA-6230 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/96d41f0e Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/96d41f0e Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/96d41f0e Branch: refs/heads/cassandra-3.0 Commit: 96d41f0e0e44d9b3114a5d80dedf12053d36a76b Parents: 811ee6c Author: Aleksey Yeschenko Authored: Sun Nov 23 18:29:38 2014 +0300 Committer: Aleksey Yeschenko Committed: Wed Aug 19 17:27:22 2015 +0300 -- CHANGES.txt | 1 + NEWS.txt| 9 +- conf/cassandra.yaml | 13 + .../org/apache/cassandra/config/Config.java | 9 +- .../cassandra/config/DatabaseDescriptor.java| 51 +- .../apache/cassandra/db/BatchlogManager.java| 84 ++- .../cassandra/db/HintedHandOffManager.java | 543 +-- .../cassandra/db/HintedHandOffManagerMBean.java | 1 + src/java/org/apache/cassandra/db/Mutation.java | 33 +- .../org/apache/cassandra/db/SystemKeyspace.java | 31 +- .../cassandra/db/commitlog/CommitLog.java | 20 +- src/java/org/apache/cassandra/gms/Gossiper.java | 14 + .../cassandra/hints/ChecksummedDataInput.java | 114 .../cassandra/hints/EncodedHintMessage.java | 89 +++ src/java/org/apache/cassandra/hints/Hint.java | 130 + .../org/apache/cassandra/hints/HintMessage.java | 130 + .../apache/cassandra/hints/HintResponse.java| 58 ++ .../apache/cassandra/hints/HintVerbHandler.java | 89 +++ .../org/apache/cassandra/hints/HintsBuffer.java | 261 + .../apache/cassandra/hints/HintsBufferPool.java | 120 .../apache/cassandra/hints/HintsCatalog.java| 128 + .../apache/cassandra/hints/HintsDescriptor.java | 242 + .../cassandra/hints/HintsDispatchExecutor.java | 199 +++ .../cassandra/hints/HintsDispatchTrigger.java | 85 +++ .../apache/cassandra/hints/HintsDispatcher.java | 228 .../org/apache/cassandra/hints/HintsReader.java | 312 +++ .../apache/cassandra/hints/HintsService.java| 291 ++ .../cassandra/hints/HintsServiceMBean.java | 43 ++ .../org/apache/cassandra/hints/HintsStore.java | 210 +++ .../cassandra/hints/HintsWriteExecutor.java | 235 .../org/apache/cassandra/hints/HintsWriter.java | 272 ++ .../cassandra/hints/LegacyHintsMigrator.java| 243 + .../apache/cassandra/hints/package-info.java| 44 ++ .../cassandra/metrics/HintedHandoffMetrics.java | 3 +- .../cassandra/metrics/HintsServiceMetrics.java | 25 + .../apache/cassandra/net/MessagingService.java | 9 +- .../cassandra/service/CassandraDaemon.java | 4 + .../apache/cassandra/service/StartupChecks.java | 43 +- .../apache/cassandra/service/StorageProxy.java | 209 +++ .../cassandra/service/StorageService.java | 68 ++- .../org/apache/cassandra/tools/NodeProbe.java | 2 +- .../org/apache/cassandra/utils/FBUtilities.java | 32 +- .../org/apache/cassandra/utils/Throwables.java | 90 ++- test/conf/cassandra.yaml| 1 + .../cassandra/hints/HintsWriteThenReadTest.java | 191 +++ .../OffsetAwareConfigurationLoader.java | 1 + .../apache/cassandra/db/HintedHandOffTest.java | 150 - .../cassandra/db/commitlog/CommitLogTest.java | 4 +- .../hints/ChecksummedDataInputTest.java | 112 .../apache/cassandra/hints/HintMessageTest.java | 79 +++ .../org/apache/cassandra/hints/HintTest.java| 231 .../apache/cassandra/hints/HintsBufferTest.java | 236 .../cassandra/hints/HintsCatalogTest.java | 88 +++ .../cassandra/hints/HintsDescriptorTest.java| 153 ++ .../apache/cassandra/hints/HintsTestUtil.java | 60 ++ .../hints/LegacyHintsMigratorTest.java | 195 +++ .../metrics/HintedHandOffMetricsTest.java | 56 ++ .../cassandra/service/StorageProxyTest.java | 3 +- 58 files changed, 5469 insertions(+), 908 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/96d41f0e/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 54a6a07..0d17235 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.0-beta1 + * Rewrite hinted handoff (CASSANDRA-6230) * Fix query on static compact tables (CASSANDRA-10093) * Fix race during construction of commit log (CASSANDRA-10049) * Add option to only purge repaired tombstones (CASSANDRA-6434) http://git-wip-us.apache.org/repos/asf/cassandra/blob/96d41f0e/NEWS.txt -- diff --git a/NEWS.txt
[3/4] cassandra git commit: Rewrite hinted handoff
http://git-wip-us.apache.org/repos/asf/cassandra/blob/96d41f0e/src/java/org/apache/cassandra/hints/HintVerbHandler.java -- diff --git a/src/java/org/apache/cassandra/hints/HintVerbHandler.java b/src/java/org/apache/cassandra/hints/HintVerbHandler.java new file mode 100644 index 000..458d01f --- /dev/null +++ b/src/java/org/apache/cassandra/hints/HintVerbHandler.java @@ -0,0 +1,89 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cassandra.hints; + +import java.net.InetAddress; +import java.util.UUID; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.apache.cassandra.db.partitions.PartitionUpdate; +import org.apache.cassandra.net.IVerbHandler; +import org.apache.cassandra.net.MessageIn; +import org.apache.cassandra.net.MessagingService; +import org.apache.cassandra.serializers.MarshalException; +import org.apache.cassandra.service.StorageService; + +/** + * Verb handler used both for hint dispatch and streaming. + * + * With the non-sstable format, we cannot just stream hint sstables on node decommission. So sometimes, at decommission + * time, we might have to stream hints to a non-owning host (say, if the owning host B is down during decommission of host A). + * In that case the handler just stores the received hint in its local hint store. + */ +public final class HintVerbHandler implements IVerbHandler +{ +private static final Logger logger = LoggerFactory.getLogger(HintVerbHandler.class); + +public void doVerb(MessageIn message, int id) +{ +UUID hostId = message.payload.hostId; +Hint hint = message.payload.hint; + +// If we see an unknown table id, it means the table, or one of the tables in the mutation, had been dropped. +// In that case there is nothing we can really do, or should do, other than log it go on. +// This will *not* happen due to a not-yet-seen table, because we don't transfer hints unless there +// is schema agreement between the sender and the receiver. +if (hint == null) +{ +logger.debug("Failed to decode and apply a hint for {} - table with id {} is unknown", + hostId, + message.payload.unknownTableID); +reply(id, message.from); +return; +} + +// We must perform validation before applying the hint, and there is no other place to do it other than here. +try +{ + hint.mutation.getPartitionUpdates().forEach(PartitionUpdate::validate); +} +catch (MarshalException e) +{ +logger.warn("Failed to validate a hint for {} (table id {}) - skipped", hostId); +reply(id, message.from); +return; +} + +// Apply the hint if this node is the destination, store for future dispatch if this node isn't (must have gotten +// it from a decommissioned node that had streamed it before going out). +if (hostId.equals(StorageService.instance.getLocalHostUUID())) +hint.apply(); +else +HintsService.instance.write(hostId, hint); + +reply(id, message.from); +} + +private static void reply(int id, InetAddress to) +{ +MessagingService.instance().sendReply(HintResponse.message, id, to); +} +} http://git-wip-us.apache.org/repos/asf/cassandra/blob/96d41f0e/src/java/org/apache/cassandra/hints/HintsBuffer.java -- diff --git a/src/java/org/apache/cassandra/hints/HintsBuffer.java b/src/java/org/apache/cassandra/hints/HintsBuffer.java new file mode 100644 index 000..097abce --- /dev/null +++ b/src/java/org/apache/cassandra/hints/HintsBuffer.java @@ -0,0 +1,261 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file exc
[4/5] cassandra git commit: Rewrite hinted handoff
Rewrite hinted handoff patch by Aleksey Yeschenko; reviewed by Benedict Elliott Smith for CASSANDRA-6230 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/96d41f0e Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/96d41f0e Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/96d41f0e Branch: refs/heads/trunk Commit: 96d41f0e0e44d9b3114a5d80dedf12053d36a76b Parents: 811ee6c Author: Aleksey Yeschenko Authored: Sun Nov 23 18:29:38 2014 +0300 Committer: Aleksey Yeschenko Committed: Wed Aug 19 17:27:22 2015 +0300 -- CHANGES.txt | 1 + NEWS.txt| 9 +- conf/cassandra.yaml | 13 + .../org/apache/cassandra/config/Config.java | 9 +- .../cassandra/config/DatabaseDescriptor.java| 51 +- .../apache/cassandra/db/BatchlogManager.java| 84 ++- .../cassandra/db/HintedHandOffManager.java | 543 +-- .../cassandra/db/HintedHandOffManagerMBean.java | 1 + src/java/org/apache/cassandra/db/Mutation.java | 33 +- .../org/apache/cassandra/db/SystemKeyspace.java | 31 +- .../cassandra/db/commitlog/CommitLog.java | 20 +- src/java/org/apache/cassandra/gms/Gossiper.java | 14 + .../cassandra/hints/ChecksummedDataInput.java | 114 .../cassandra/hints/EncodedHintMessage.java | 89 +++ src/java/org/apache/cassandra/hints/Hint.java | 130 + .../org/apache/cassandra/hints/HintMessage.java | 130 + .../apache/cassandra/hints/HintResponse.java| 58 ++ .../apache/cassandra/hints/HintVerbHandler.java | 89 +++ .../org/apache/cassandra/hints/HintsBuffer.java | 261 + .../apache/cassandra/hints/HintsBufferPool.java | 120 .../apache/cassandra/hints/HintsCatalog.java| 128 + .../apache/cassandra/hints/HintsDescriptor.java | 242 + .../cassandra/hints/HintsDispatchExecutor.java | 199 +++ .../cassandra/hints/HintsDispatchTrigger.java | 85 +++ .../apache/cassandra/hints/HintsDispatcher.java | 228 .../org/apache/cassandra/hints/HintsReader.java | 312 +++ .../apache/cassandra/hints/HintsService.java| 291 ++ .../cassandra/hints/HintsServiceMBean.java | 43 ++ .../org/apache/cassandra/hints/HintsStore.java | 210 +++ .../cassandra/hints/HintsWriteExecutor.java | 235 .../org/apache/cassandra/hints/HintsWriter.java | 272 ++ .../cassandra/hints/LegacyHintsMigrator.java| 243 + .../apache/cassandra/hints/package-info.java| 44 ++ .../cassandra/metrics/HintedHandoffMetrics.java | 3 +- .../cassandra/metrics/HintsServiceMetrics.java | 25 + .../apache/cassandra/net/MessagingService.java | 9 +- .../cassandra/service/CassandraDaemon.java | 4 + .../apache/cassandra/service/StartupChecks.java | 43 +- .../apache/cassandra/service/StorageProxy.java | 209 +++ .../cassandra/service/StorageService.java | 68 ++- .../org/apache/cassandra/tools/NodeProbe.java | 2 +- .../org/apache/cassandra/utils/FBUtilities.java | 32 +- .../org/apache/cassandra/utils/Throwables.java | 90 ++- test/conf/cassandra.yaml| 1 + .../cassandra/hints/HintsWriteThenReadTest.java | 191 +++ .../OffsetAwareConfigurationLoader.java | 1 + .../apache/cassandra/db/HintedHandOffTest.java | 150 - .../cassandra/db/commitlog/CommitLogTest.java | 4 +- .../hints/ChecksummedDataInputTest.java | 112 .../apache/cassandra/hints/HintMessageTest.java | 79 +++ .../org/apache/cassandra/hints/HintTest.java| 231 .../apache/cassandra/hints/HintsBufferTest.java | 236 .../cassandra/hints/HintsCatalogTest.java | 88 +++ .../cassandra/hints/HintsDescriptorTest.java| 153 ++ .../apache/cassandra/hints/HintsTestUtil.java | 60 ++ .../hints/LegacyHintsMigratorTest.java | 195 +++ .../metrics/HintedHandOffMetricsTest.java | 56 ++ .../cassandra/service/StorageProxyTest.java | 3 +- 58 files changed, 5469 insertions(+), 908 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/96d41f0e/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 54a6a07..0d17235 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.0-beta1 + * Rewrite hinted handoff (CASSANDRA-6230) * Fix query on static compact tables (CASSANDRA-10093) * Fix race during construction of commit log (CASSANDRA-10049) * Add option to only purge repaired tombstones (CASSANDRA-6434) http://git-wip-us.apache.org/repos/asf/cassandra/blob/96d41f0e/NEWS.txt -- diff --git a/NEWS.txt b
[2/5] cassandra git commit: Rewrite hinted handoff
http://git-wip-us.apache.org/repos/asf/cassandra/blob/96d41f0e/src/java/org/apache/cassandra/hints/HintsWriter.java -- diff --git a/src/java/org/apache/cassandra/hints/HintsWriter.java b/src/java/org/apache/cassandra/hints/HintsWriter.java new file mode 100644 index 000..300d9cc --- /dev/null +++ b/src/java/org/apache/cassandra/hints/HintsWriter.java @@ -0,0 +1,272 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.hints; + +import java.io.File; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.ByteBuffer; +import java.nio.channels.FileChannel; +import java.nio.file.Files; +import java.nio.file.StandardOpenOption; +import java.util.zip.CRC32; + +import org.apache.cassandra.config.DatabaseDescriptor; +import org.apache.cassandra.io.FSWriteError; +import org.apache.cassandra.io.util.DataOutputBuffer; +import org.apache.cassandra.io.util.DataOutputBufferFixed; +import org.apache.cassandra.utils.CLibrary; +import org.apache.cassandra.utils.SyncUtil; +import org.apache.cassandra.utils.Throwables; + +import static org.apache.cassandra.utils.FBUtilities.updateChecksum; +import static org.apache.cassandra.utils.FBUtilities.updateChecksumInt; +import static org.apache.cassandra.utils.Throwables.perform; + +final class HintsWriter implements AutoCloseable +{ +static final int PAGE_SIZE = 4096; + +private final File directory; +private final HintsDescriptor descriptor; +private final File file; +private final FileChannel channel; +private final int fd; +private final CRC32 globalCRC; + +private volatile long lastSyncPosition = 0L; + +private HintsWriter(File directory, HintsDescriptor descriptor, File file, FileChannel channel, int fd, CRC32 globalCRC) +{ +this.directory = directory; +this.descriptor = descriptor; +this.file = file; +this.channel = channel; +this.fd = fd; +this.globalCRC = globalCRC; +} + +static HintsWriter create(File directory, HintsDescriptor descriptor) throws IOException +{ +File file = new File(directory, descriptor.fileName()); + +FileChannel channel = FileChannel.open(file.toPath(), StandardOpenOption.WRITE, StandardOpenOption.CREATE_NEW); +int fd = CLibrary.getfd(channel); + +CRC32 crc = new CRC32(); + +try +{ +// write the descriptor +DataOutputBuffer dob = new DataOutputBuffer(); +descriptor.serialize(dob); +ByteBuffer descriptorBytes = dob.buffer(); +updateChecksum(crc, descriptorBytes); +channel.write(descriptorBytes); +} +catch (Throwable e) +{ +channel.close(); +throw e; +} + +return new HintsWriter(directory, descriptor, file, channel, fd, crc); +} + +HintsDescriptor descriptor() +{ +return descriptor; +} + +private void writeChecksum() +{ +File checksumFile = new File(directory, descriptor.checksumFileName()); +try (OutputStream out = Files.newOutputStream(checksumFile.toPath())) +{ +out.write(Integer.toHexString((int) globalCRC.getValue()).getBytes()); +} +catch (IOException e) +{ +throw new FSWriteError(e, checksumFile); +} +} + +public void close() +{ +perform(file, Throwables.FileOpType.WRITE, this::doFsync, channel::close); + +writeChecksum(); +} + +public void fsync() +{ +perform(file, Throwables.FileOpType.WRITE, this::doFsync); +} + +private void doFsync() throws IOException +{ +SyncUtil.force(channel, true); +lastSyncPosition = channel.position(); +} + +Session newSession(ByteBuffer buffer) +{ +try +{ +return new Session(buffer, channel.size()); +} +catch (IOException e) +{ +throw new FSWriteError(e, file); +} +} + +/** + * The primary goal of the Session class is to be able to share the same buffers among potentially dozens
[1/5] cassandra git commit: Rewrite hinted handoff
Repository: cassandra Updated Branches: refs/heads/trunk b83b674ee -> cabdb03a9 http://git-wip-us.apache.org/repos/asf/cassandra/blob/96d41f0e/test/unit/org/apache/cassandra/hints/HintMessageTest.java -- diff --git a/test/unit/org/apache/cassandra/hints/HintMessageTest.java b/test/unit/org/apache/cassandra/hints/HintMessageTest.java new file mode 100644 index 000..7ffaa54 --- /dev/null +++ b/test/unit/org/apache/cassandra/hints/HintMessageTest.java @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.hints; + +import java.io.IOException; +import java.util.UUID; + +import org.junit.Test; + +import org.apache.cassandra.SchemaLoader; +import org.apache.cassandra.config.CFMetaData; +import org.apache.cassandra.config.Schema; +import org.apache.cassandra.db.Mutation; +import org.apache.cassandra.db.RowUpdateBuilder; +import org.apache.cassandra.io.util.DataInputBuffer; +import org.apache.cassandra.io.util.DataInputPlus; +import org.apache.cassandra.io.util.DataOutputBuffer; +import org.apache.cassandra.net.MessagingService; +import org.apache.cassandra.schema.KeyspaceParams; +import org.apache.cassandra.utils.FBUtilities; + +import static junit.framework.Assert.assertEquals; + +import static org.apache.cassandra.hints.HintsTestUtil.assertHintsEqual; +import static org.apache.cassandra.utils.ByteBufferUtil.bytes; + +public class HintMessageTest +{ +private static final String KEYSPACE = "hint_message_test"; +private static final String TABLE = "table"; + +@Test +public void testSerializer() throws IOException +{ +SchemaLoader.prepareServer(); +SchemaLoader.createKeyspace(KEYSPACE, KeyspaceParams.simple(1), SchemaLoader.standardCFMD(KEYSPACE, TABLE)); + +UUID hostId = UUID.randomUUID(); +long now = FBUtilities.timestampMicros(); + +CFMetaData table = Schema.instance.getCFMetaData(KEYSPACE, TABLE); +Mutation mutation = +new RowUpdateBuilder(table, now, bytes("key")) +.clustering("column") +.add("val", "val" + 1234) +.build(); +Hint hint = Hint.create(mutation, now / 1000); +HintMessage message = new HintMessage(hostId, hint); + +// serialize +int serializedSize = (int) HintMessage.serializer.serializedSize(message, MessagingService.current_version); +DataOutputBuffer dob = new DataOutputBuffer(); +HintMessage.serializer.serialize(message, dob, MessagingService.current_version); +assertEquals(serializedSize, dob.getLength()); + +// deserialize +DataInputPlus di = new DataInputBuffer(dob.buffer(), true); +HintMessage deserializedMessage = HintMessage.serializer.deserialize(di, MessagingService.current_version); + +// compare before/after +assertEquals(hostId, deserializedMessage.hostId); +assertHintsEqual(message.hint, deserializedMessage.hint); +} +} http://git-wip-us.apache.org/repos/asf/cassandra/blob/96d41f0e/test/unit/org/apache/cassandra/hints/HintTest.java -- diff --git a/test/unit/org/apache/cassandra/hints/HintTest.java b/test/unit/org/apache/cassandra/hints/HintTest.java new file mode 100644 index 000..c198149 --- /dev/null +++ b/test/unit/org/apache/cassandra/hints/HintTest.java @@ -0,0 +1,231 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for th
[1/4] cassandra git commit: Rewrite hinted handoff
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 811ee6ca2 -> 96d41f0e0 http://git-wip-us.apache.org/repos/asf/cassandra/blob/96d41f0e/test/unit/org/apache/cassandra/hints/HintMessageTest.java -- diff --git a/test/unit/org/apache/cassandra/hints/HintMessageTest.java b/test/unit/org/apache/cassandra/hints/HintMessageTest.java new file mode 100644 index 000..7ffaa54 --- /dev/null +++ b/test/unit/org/apache/cassandra/hints/HintMessageTest.java @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.hints; + +import java.io.IOException; +import java.util.UUID; + +import org.junit.Test; + +import org.apache.cassandra.SchemaLoader; +import org.apache.cassandra.config.CFMetaData; +import org.apache.cassandra.config.Schema; +import org.apache.cassandra.db.Mutation; +import org.apache.cassandra.db.RowUpdateBuilder; +import org.apache.cassandra.io.util.DataInputBuffer; +import org.apache.cassandra.io.util.DataInputPlus; +import org.apache.cassandra.io.util.DataOutputBuffer; +import org.apache.cassandra.net.MessagingService; +import org.apache.cassandra.schema.KeyspaceParams; +import org.apache.cassandra.utils.FBUtilities; + +import static junit.framework.Assert.assertEquals; + +import static org.apache.cassandra.hints.HintsTestUtil.assertHintsEqual; +import static org.apache.cassandra.utils.ByteBufferUtil.bytes; + +public class HintMessageTest +{ +private static final String KEYSPACE = "hint_message_test"; +private static final String TABLE = "table"; + +@Test +public void testSerializer() throws IOException +{ +SchemaLoader.prepareServer(); +SchemaLoader.createKeyspace(KEYSPACE, KeyspaceParams.simple(1), SchemaLoader.standardCFMD(KEYSPACE, TABLE)); + +UUID hostId = UUID.randomUUID(); +long now = FBUtilities.timestampMicros(); + +CFMetaData table = Schema.instance.getCFMetaData(KEYSPACE, TABLE); +Mutation mutation = +new RowUpdateBuilder(table, now, bytes("key")) +.clustering("column") +.add("val", "val" + 1234) +.build(); +Hint hint = Hint.create(mutation, now / 1000); +HintMessage message = new HintMessage(hostId, hint); + +// serialize +int serializedSize = (int) HintMessage.serializer.serializedSize(message, MessagingService.current_version); +DataOutputBuffer dob = new DataOutputBuffer(); +HintMessage.serializer.serialize(message, dob, MessagingService.current_version); +assertEquals(serializedSize, dob.getLength()); + +// deserialize +DataInputPlus di = new DataInputBuffer(dob.buffer(), true); +HintMessage deserializedMessage = HintMessage.serializer.deserialize(di, MessagingService.current_version); + +// compare before/after +assertEquals(hostId, deserializedMessage.hostId); +assertHintsEqual(message.hint, deserializedMessage.hint); +} +} http://git-wip-us.apache.org/repos/asf/cassandra/blob/96d41f0e/test/unit/org/apache/cassandra/hints/HintTest.java -- diff --git a/test/unit/org/apache/cassandra/hints/HintTest.java b/test/unit/org/apache/cassandra/hints/HintTest.java new file mode 100644 index 000..c198149 --- /dev/null +++ b/test/unit/org/apache/cassandra/hints/HintTest.java @@ -0,0 +1,231 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licens
[5/5] cassandra git commit: Merge branch 'cassandra-3.0' into trunk
Merge branch 'cassandra-3.0' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/cabdb03a Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/cabdb03a Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/cabdb03a Branch: refs/heads/trunk Commit: cabdb03a9f63a05d1f6e3b27fafde8b2e6385c23 Parents: b83b674 96d41f0 Author: Aleksey Yeschenko Authored: Wed Aug 19 17:30:00 2015 +0300 Committer: Aleksey Yeschenko Committed: Wed Aug 19 17:30:00 2015 +0300 -- CHANGES.txt | 1 + NEWS.txt| 9 +- conf/cassandra.yaml | 13 + .../org/apache/cassandra/config/Config.java | 7 +- .../cassandra/config/DatabaseDescriptor.java| 51 +- .../apache/cassandra/db/BatchlogManager.java| 84 ++- .../cassandra/db/HintedHandOffManager.java | 543 +-- .../cassandra/db/HintedHandOffManagerMBean.java | 1 + src/java/org/apache/cassandra/db/Mutation.java | 33 +- .../org/apache/cassandra/db/SystemKeyspace.java | 31 +- .../cassandra/db/commitlog/CommitLog.java | 20 +- src/java/org/apache/cassandra/gms/Gossiper.java | 14 + .../cassandra/hints/ChecksummedDataInput.java | 114 .../cassandra/hints/EncodedHintMessage.java | 89 +++ src/java/org/apache/cassandra/hints/Hint.java | 130 + .../org/apache/cassandra/hints/HintMessage.java | 130 + .../apache/cassandra/hints/HintResponse.java| 58 ++ .../apache/cassandra/hints/HintVerbHandler.java | 89 +++ .../org/apache/cassandra/hints/HintsBuffer.java | 261 + .../apache/cassandra/hints/HintsBufferPool.java | 120 .../apache/cassandra/hints/HintsCatalog.java| 128 + .../apache/cassandra/hints/HintsDescriptor.java | 242 + .../cassandra/hints/HintsDispatchExecutor.java | 199 +++ .../cassandra/hints/HintsDispatchTrigger.java | 85 +++ .../apache/cassandra/hints/HintsDispatcher.java | 228 .../org/apache/cassandra/hints/HintsReader.java | 312 +++ .../apache/cassandra/hints/HintsService.java| 291 ++ .../cassandra/hints/HintsServiceMBean.java | 43 ++ .../org/apache/cassandra/hints/HintsStore.java | 210 +++ .../cassandra/hints/HintsWriteExecutor.java | 235 .../org/apache/cassandra/hints/HintsWriter.java | 272 ++ .../cassandra/hints/LegacyHintsMigrator.java| 243 + .../apache/cassandra/hints/package-info.java| 44 ++ .../cassandra/metrics/HintedHandoffMetrics.java | 3 +- .../cassandra/metrics/HintsServiceMetrics.java | 25 + .../apache/cassandra/net/MessagingService.java | 9 +- .../cassandra/service/CassandraDaemon.java | 4 + .../apache/cassandra/service/StartupChecks.java | 43 +- .../apache/cassandra/service/StorageProxy.java | 209 +++ .../cassandra/service/StorageService.java | 68 ++- .../org/apache/cassandra/tools/NodeProbe.java | 2 +- .../org/apache/cassandra/utils/FBUtilities.java | 32 +- .../org/apache/cassandra/utils/Throwables.java | 90 ++- test/conf/cassandra.yaml| 1 + .../cassandra/hints/HintsWriteThenReadTest.java | 191 +++ .../OffsetAwareConfigurationLoader.java | 1 + .../apache/cassandra/db/HintedHandOffTest.java | 150 - .../cassandra/db/commitlog/CommitLogTest.java | 4 +- .../hints/ChecksummedDataInputTest.java | 112 .../apache/cassandra/hints/HintMessageTest.java | 79 +++ .../org/apache/cassandra/hints/HintTest.java| 231 .../apache/cassandra/hints/HintsBufferTest.java | 236 .../cassandra/hints/HintsCatalogTest.java | 88 +++ .../cassandra/hints/HintsDescriptorTest.java| 153 ++ .../apache/cassandra/hints/HintsTestUtil.java | 60 ++ .../hints/LegacyHintsMigratorTest.java | 195 +++ .../metrics/HintedHandOffMetricsTest.java | 56 ++ .../cassandra/service/StorageProxyTest.java | 3 +- 58 files changed, 5468 insertions(+), 907 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/cabdb03a/CHANGES.txt -- diff --cc CHANGES.txt index eba9e36,0d17235..a78a19c --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,8 -1,5 +1,9 @@@ +3.2 + * Add transparent data encryption core classes (CASSANDRA-9945) + + 3.0.0-beta1 + * Rewrite hinted handoff (CASSANDRA-6230) * Fix query on static compact tables (CASSANDRA-10093) * Fix race during construction of commit log (CASSANDRA-10049) * Add option to only purge repaired tombstones (CASSANDRA-6434) http://git-wip-us.apache.org/repos/asf/cassandra/blob/cabdb03a/src/java/org/apache/cassandra/config/C
[3/5] cassandra git commit: Rewrite hinted handoff
http://git-wip-us.apache.org/repos/asf/cassandra/blob/96d41f0e/src/java/org/apache/cassandra/hints/HintVerbHandler.java -- diff --git a/src/java/org/apache/cassandra/hints/HintVerbHandler.java b/src/java/org/apache/cassandra/hints/HintVerbHandler.java new file mode 100644 index 000..458d01f --- /dev/null +++ b/src/java/org/apache/cassandra/hints/HintVerbHandler.java @@ -0,0 +1,89 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cassandra.hints; + +import java.net.InetAddress; +import java.util.UUID; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.apache.cassandra.db.partitions.PartitionUpdate; +import org.apache.cassandra.net.IVerbHandler; +import org.apache.cassandra.net.MessageIn; +import org.apache.cassandra.net.MessagingService; +import org.apache.cassandra.serializers.MarshalException; +import org.apache.cassandra.service.StorageService; + +/** + * Verb handler used both for hint dispatch and streaming. + * + * With the non-sstable format, we cannot just stream hint sstables on node decommission. So sometimes, at decommission + * time, we might have to stream hints to a non-owning host (say, if the owning host B is down during decommission of host A). + * In that case the handler just stores the received hint in its local hint store. + */ +public final class HintVerbHandler implements IVerbHandler +{ +private static final Logger logger = LoggerFactory.getLogger(HintVerbHandler.class); + +public void doVerb(MessageIn message, int id) +{ +UUID hostId = message.payload.hostId; +Hint hint = message.payload.hint; + +// If we see an unknown table id, it means the table, or one of the tables in the mutation, had been dropped. +// In that case there is nothing we can really do, or should do, other than log it go on. +// This will *not* happen due to a not-yet-seen table, because we don't transfer hints unless there +// is schema agreement between the sender and the receiver. +if (hint == null) +{ +logger.debug("Failed to decode and apply a hint for {} - table with id {} is unknown", + hostId, + message.payload.unknownTableID); +reply(id, message.from); +return; +} + +// We must perform validation before applying the hint, and there is no other place to do it other than here. +try +{ + hint.mutation.getPartitionUpdates().forEach(PartitionUpdate::validate); +} +catch (MarshalException e) +{ +logger.warn("Failed to validate a hint for {} (table id {}) - skipped", hostId); +reply(id, message.from); +return; +} + +// Apply the hint if this node is the destination, store for future dispatch if this node isn't (must have gotten +// it from a decommissioned node that had streamed it before going out). +if (hostId.equals(StorageService.instance.getLocalHostUUID())) +hint.apply(); +else +HintsService.instance.write(hostId, hint); + +reply(id, message.from); +} + +private static void reply(int id, InetAddress to) +{ +MessagingService.instance().sendReply(HintResponse.message, id, to); +} +} http://git-wip-us.apache.org/repos/asf/cassandra/blob/96d41f0e/src/java/org/apache/cassandra/hints/HintsBuffer.java -- diff --git a/src/java/org/apache/cassandra/hints/HintsBuffer.java b/src/java/org/apache/cassandra/hints/HintsBuffer.java new file mode 100644 index 000..097abce --- /dev/null +++ b/src/java/org/apache/cassandra/hints/HintsBuffer.java @@ -0,0 +1,261 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file exc
cassandra git commit: Fix post-6717 driver issue with indexes
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 cb8ff5d3a -> 51bc7f87d Fix post-6717 driver issue with indexes patch by Blake Eggleston; reviewed by Aleksey Yeschenko for CASSANDRA-10121 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/51bc7f87 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/51bc7f87 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/51bc7f87 Branch: refs/heads/cassandra-3.0 Commit: 51bc7f87d708abb66db73976e5a60df8e53c7c4a Parents: cb8ff5d Author: Blake Eggleston Authored: Wed Aug 19 22:15:51 2015 +0300 Committer: Aleksey Yeschenko Committed: Wed Aug 19 22:17:05 2015 +0300 -- ...core-3.0.0-alpha2-188d996-SNAPSHOT-shaded.jar | Bin 2204619 -> 0 bytes ...core-3.0.0-alpha2-ae1e256-SNAPSHOT-shaded.jar | Bin 0 -> 2209194 bytes 2 files changed, 0 insertions(+), 0 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/51bc7f87/lib/cassandra-driver-core-3.0.0-alpha2-188d996-SNAPSHOT-shaded.jar -- diff --git a/lib/cassandra-driver-core-3.0.0-alpha2-188d996-SNAPSHOT-shaded.jar b/lib/cassandra-driver-core-3.0.0-alpha2-188d996-SNAPSHOT-shaded.jar deleted file mode 100644 index 14354bd..000 Binary files a/lib/cassandra-driver-core-3.0.0-alpha2-188d996-SNAPSHOT-shaded.jar and /dev/null differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/51bc7f87/lib/cassandra-driver-core-3.0.0-alpha2-ae1e256-SNAPSHOT-shaded.jar -- diff --git a/lib/cassandra-driver-core-3.0.0-alpha2-ae1e256-SNAPSHOT-shaded.jar b/lib/cassandra-driver-core-3.0.0-alpha2-ae1e256-SNAPSHOT-shaded.jar new file mode 100644 index 000..f930cc6 Binary files /dev/null and b/lib/cassandra-driver-core-3.0.0-alpha2-ae1e256-SNAPSHOT-shaded.jar differ
[2/2] cassandra git commit: Merge branch 'cassandra-3.0' into trunk
Merge branch 'cassandra-3.0' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/b1c7f595 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/b1c7f595 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/b1c7f595 Branch: refs/heads/trunk Commit: b1c7f59554fccc03cf7b3976dfa7c7d42de15154 Parents: 2c31677 51bc7f8 Author: Aleksey Yeschenko Authored: Wed Aug 19 22:17:45 2015 +0300 Committer: Aleksey Yeschenko Committed: Wed Aug 19 22:17:45 2015 +0300 -- ...core-3.0.0-alpha2-188d996-SNAPSHOT-shaded.jar | Bin 2204619 -> 0 bytes ...core-3.0.0-alpha2-ae1e256-SNAPSHOT-shaded.jar | Bin 0 -> 2209194 bytes 2 files changed, 0 insertions(+), 0 deletions(-) --
[1/2] cassandra git commit: Fix post-6717 driver issue with indexes
Repository: cassandra Updated Branches: refs/heads/trunk 2c3167722 -> b1c7f5955 Fix post-6717 driver issue with indexes patch by Blake Eggleston; reviewed by Aleksey Yeschenko for CASSANDRA-10121 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/51bc7f87 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/51bc7f87 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/51bc7f87 Branch: refs/heads/trunk Commit: 51bc7f87d708abb66db73976e5a60df8e53c7c4a Parents: cb8ff5d Author: Blake Eggleston Authored: Wed Aug 19 22:15:51 2015 +0300 Committer: Aleksey Yeschenko Committed: Wed Aug 19 22:17:05 2015 +0300 -- ...core-3.0.0-alpha2-188d996-SNAPSHOT-shaded.jar | Bin 2204619 -> 0 bytes ...core-3.0.0-alpha2-ae1e256-SNAPSHOT-shaded.jar | Bin 0 -> 2209194 bytes 2 files changed, 0 insertions(+), 0 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/51bc7f87/lib/cassandra-driver-core-3.0.0-alpha2-188d996-SNAPSHOT-shaded.jar -- diff --git a/lib/cassandra-driver-core-3.0.0-alpha2-188d996-SNAPSHOT-shaded.jar b/lib/cassandra-driver-core-3.0.0-alpha2-188d996-SNAPSHOT-shaded.jar deleted file mode 100644 index 14354bd..000 Binary files a/lib/cassandra-driver-core-3.0.0-alpha2-188d996-SNAPSHOT-shaded.jar and /dev/null differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/51bc7f87/lib/cassandra-driver-core-3.0.0-alpha2-ae1e256-SNAPSHOT-shaded.jar -- diff --git a/lib/cassandra-driver-core-3.0.0-alpha2-ae1e256-SNAPSHOT-shaded.jar b/lib/cassandra-driver-core-3.0.0-alpha2-ae1e256-SNAPSHOT-shaded.jar new file mode 100644 index 000..f930cc6 Binary files /dev/null and b/lib/cassandra-driver-core-3.0.0-alpha2-ae1e256-SNAPSHOT-shaded.jar differ
cassandra git commit: Fix Coverity-flagged CASSANDRA-6230 issues
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 51bc7f87d -> 4cc2b67df Fix Coverity-flagged CASSANDRA-6230 issues Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/4cc2b67d Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/4cc2b67d Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/4cc2b67d Branch: refs/heads/cassandra-3.0 Commit: 4cc2b67df369bc3e9587b9e4864b8058ca78cdf7 Parents: 51bc7f8 Author: Aleksey Yeschenko Authored: Thu Aug 20 00:30:30 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Aug 20 00:30:53 2015 +0300 -- src/java/org/apache/cassandra/config/DatabaseDescriptor.java | 2 +- src/java/org/apache/cassandra/hints/HintsWriter.java | 7 --- src/java/org/apache/cassandra/hints/LegacyHintsMigrator.java | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/4cc2b67d/src/java/org/apache/cassandra/config/DatabaseDescriptor.java -- diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java index b3bc4d2..01455ac 100644 --- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java +++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java @@ -1527,7 +1527,7 @@ public class DatabaseDescriptor public static long getMaxHintsFileSize() { -return conf.max_hints_file_size_in_mb * 1024 * 1024; +return conf.max_hints_file_size_in_mb * 1024L * 1024L; } public static boolean isIncrementalBackupsEnabled() http://git-wip-us.apache.org/repos/asf/cassandra/blob/4cc2b67d/src/java/org/apache/cassandra/hints/HintsWriter.java -- diff --git a/src/java/org/apache/cassandra/hints/HintsWriter.java b/src/java/org/apache/cassandra/hints/HintsWriter.java index 300d9cc..5cadd35 100644 --- a/src/java/org/apache/cassandra/hints/HintsWriter.java +++ b/src/java/org/apache/cassandra/hints/HintsWriter.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.io.OutputStream; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.StandardOpenOption; import java.util.zip.CRC32; @@ -98,7 +99,7 @@ final class HintsWriter implements AutoCloseable File checksumFile = new File(directory, descriptor.checksumFileName()); try (OutputStream out = Files.newOutputStream(checksumFile.toPath())) { -out.write(Integer.toHexString((int) globalCRC.getValue()).getBytes()); +out.write(Integer.toHexString((int) globalCRC.getValue()).getBytes(StandardCharsets.UTF_8)); } catch (IOException e) { @@ -255,7 +256,7 @@ final class HintsWriter implements AutoCloseable private void maybeFsync() { -if (position() >= lastSyncPosition + DatabaseDescriptor.getTrickleFsyncIntervalInKb() * 1024) +if (position() >= lastSyncPosition + DatabaseDescriptor.getTrickleFsyncIntervalInKb() * 1024L) fsync(); } @@ -265,7 +266,7 @@ final class HintsWriter implements AutoCloseable // don't skip page cache for tiny files, on the assumption that if they are tiny, the target node is probably // alive, and if so, the file will be closed and dispatched shortly (within a minute), and the file will be dropped. -if (position >= DatabaseDescriptor.getTrickleFsyncIntervalInKb() * 1024) +if (position >= DatabaseDescriptor.getTrickleFsyncIntervalInKb() * 1024L) CLibrary.trySkipCache(fd, 0, position - (position % PAGE_SIZE), file.getPath()); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/4cc2b67d/src/java/org/apache/cassandra/hints/LegacyHintsMigrator.java -- diff --git a/src/java/org/apache/cassandra/hints/LegacyHintsMigrator.java b/src/java/org/apache/cassandra/hints/LegacyHintsMigrator.java index 082e307..196f184 100644 --- a/src/java/org/apache/cassandra/hints/LegacyHintsMigrator.java +++ b/src/java/org/apache/cassandra/hints/LegacyHintsMigrator.java @@ -71,7 +71,7 @@ public final class LegacyHintsMigrator int meanCellCount = legacyHintsTable.getMeanColumns(); double meanPartitionSize = legacyHintsTable.getMeanPartitionSize(); -if (meanCellCount != 0 || meanPartitionSize != 0) +if (meanCellCount != 0 && meanPartitionSize != 0) { int avgHintSize = (int) meanPartitionSize / mean
[2/2] cassandra git commit: Merge branch 'cassandra-3.0' into trunk
Merge branch 'cassandra-3.0' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6cad04b2 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6cad04b2 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6cad04b2 Branch: refs/heads/trunk Commit: 6cad04b220833e185e05aa229684ebbdc23f4212 Parents: b1c7f59 4cc2b67 Author: Aleksey Yeschenko Authored: Thu Aug 20 00:31:27 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Aug 20 00:31:27 2015 +0300 -- src/java/org/apache/cassandra/config/DatabaseDescriptor.java | 2 +- src/java/org/apache/cassandra/hints/HintsWriter.java | 7 --- src/java/org/apache/cassandra/hints/LegacyHintsMigrator.java | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/6cad04b2/src/java/org/apache/cassandra/config/DatabaseDescriptor.java --
[1/2] cassandra git commit: Fix Coverity-flagged CASSANDRA-6230 issues
Repository: cassandra Updated Branches: refs/heads/trunk b1c7f5955 -> 6cad04b22 Fix Coverity-flagged CASSANDRA-6230 issues Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/4cc2b67d Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/4cc2b67d Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/4cc2b67d Branch: refs/heads/trunk Commit: 4cc2b67df369bc3e9587b9e4864b8058ca78cdf7 Parents: 51bc7f8 Author: Aleksey Yeschenko Authored: Thu Aug 20 00:30:30 2015 +0300 Committer: Aleksey Yeschenko Committed: Thu Aug 20 00:30:53 2015 +0300 -- src/java/org/apache/cassandra/config/DatabaseDescriptor.java | 2 +- src/java/org/apache/cassandra/hints/HintsWriter.java | 7 --- src/java/org/apache/cassandra/hints/LegacyHintsMigrator.java | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/4cc2b67d/src/java/org/apache/cassandra/config/DatabaseDescriptor.java -- diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java index b3bc4d2..01455ac 100644 --- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java +++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java @@ -1527,7 +1527,7 @@ public class DatabaseDescriptor public static long getMaxHintsFileSize() { -return conf.max_hints_file_size_in_mb * 1024 * 1024; +return conf.max_hints_file_size_in_mb * 1024L * 1024L; } public static boolean isIncrementalBackupsEnabled() http://git-wip-us.apache.org/repos/asf/cassandra/blob/4cc2b67d/src/java/org/apache/cassandra/hints/HintsWriter.java -- diff --git a/src/java/org/apache/cassandra/hints/HintsWriter.java b/src/java/org/apache/cassandra/hints/HintsWriter.java index 300d9cc..5cadd35 100644 --- a/src/java/org/apache/cassandra/hints/HintsWriter.java +++ b/src/java/org/apache/cassandra/hints/HintsWriter.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.io.OutputStream; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.StandardOpenOption; import java.util.zip.CRC32; @@ -98,7 +99,7 @@ final class HintsWriter implements AutoCloseable File checksumFile = new File(directory, descriptor.checksumFileName()); try (OutputStream out = Files.newOutputStream(checksumFile.toPath())) { -out.write(Integer.toHexString((int) globalCRC.getValue()).getBytes()); +out.write(Integer.toHexString((int) globalCRC.getValue()).getBytes(StandardCharsets.UTF_8)); } catch (IOException e) { @@ -255,7 +256,7 @@ final class HintsWriter implements AutoCloseable private void maybeFsync() { -if (position() >= lastSyncPosition + DatabaseDescriptor.getTrickleFsyncIntervalInKb() * 1024) +if (position() >= lastSyncPosition + DatabaseDescriptor.getTrickleFsyncIntervalInKb() * 1024L) fsync(); } @@ -265,7 +266,7 @@ final class HintsWriter implements AutoCloseable // don't skip page cache for tiny files, on the assumption that if they are tiny, the target node is probably // alive, and if so, the file will be closed and dispatched shortly (within a minute), and the file will be dropped. -if (position >= DatabaseDescriptor.getTrickleFsyncIntervalInKb() * 1024) +if (position >= DatabaseDescriptor.getTrickleFsyncIntervalInKb() * 1024L) CLibrary.trySkipCache(fd, 0, position - (position % PAGE_SIZE), file.getPath()); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/4cc2b67d/src/java/org/apache/cassandra/hints/LegacyHintsMigrator.java -- diff --git a/src/java/org/apache/cassandra/hints/LegacyHintsMigrator.java b/src/java/org/apache/cassandra/hints/LegacyHintsMigrator.java index 082e307..196f184 100644 --- a/src/java/org/apache/cassandra/hints/LegacyHintsMigrator.java +++ b/src/java/org/apache/cassandra/hints/LegacyHintsMigrator.java @@ -71,7 +71,7 @@ public final class LegacyHintsMigrator int meanCellCount = legacyHintsTable.getMeanColumns(); double meanPartitionSize = legacyHintsTable.getMeanPartitionSize(); -if (meanCellCount != 0 || meanPartitionSize != 0) +if (meanCellCount != 0 && meanPartitionSize != 0) { int avgHintSize = (int) meanPartitionSize / meanCellCount;