This is an automated email from the ASF dual-hosted git repository. mck pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git
commit dbe58b55e3434fe54f92c0f2f044443914291c5c Merge: 2da9af0 18c0fe8 Author: Mick Semb Wever <m...@apache.org> AuthorDate: Thu Jan 2 12:22:52 2020 +0100 Merge branch 'cassandra-3.11' into trunk CHANGES.txt | 1 + .../cassandra/db/partitions/PartitionUpdate.java | 18 ++++++++++++ test/unit/org/apache/cassandra/SchemaLoader.java | 9 ++++++ .../apache/cassandra/db/RecoveryManagerTest.java | 32 +++++++++++++++++++++- 4 files changed, 59 insertions(+), 1 deletion(-) diff --cc CHANGES.txt index 81b095c,95fecc0..e1d0ce6 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,18 -1,9 +1,19 @@@ -3.11.6 +4.0-alpha3 + * Prevent read repair mutations from increasing read timeout (CASSANDRA-15442) + * Document 4.0 system keyspace changes, bump generations (CASSANDRA-15454) + * Make it possible to disable STCS-in-L0 during runtime (CASSANDRA-15445) + * Removed obsolete OldNetworkTopologyStrategy (CASSANDRA-13990) + * Align record header of FQL and audit binary log (CASSANDRA-15076) + * Shuffle forwarding replica for messages to non-local DC (CASSANDRA-15318) + * Optimise native protocol ASCII string encoding (CASSANDRA-15410) + * Make sure all exceptions are propagated in DebuggableThreadPoolExecutor (CASSANDRA-15332) + * Make it possible to resize concurrent read / write thread pools at runtime (CASSANDRA-15277) + * Close channels on error (CASSANDRA-15407) +Merged from 3.11: * Fix nodetool compactionstats showing extra pending task for TWCS - patch implemented (CASSANDRA-15409) * Fix SELECT JSON formatting for the "duration" type (CASSANDRA-15075) - * Fix LegacyLayout to have same behavior as 2.x when handling unknown column names (CASSANDRA-15081) Merged from 3.0: + * Fix point-in-time recoevery ignoring timestamp of updates to static columns (CASSANDRA-15292) * GC logs are also put under $CASSANDRA_LOG_DIR (CASSANDRA-14306) * Fix sstabledump's position key value when partitions have multiple rows (CASSANDRA-14721) * Avoid over-scanning data directories in LogFile.verify() (CASSANDRA-15364) diff --cc src/java/org/apache/cassandra/db/partitions/PartitionUpdate.java index 31f68f4,50e4cf8..feded07 --- a/src/java/org/apache/cassandra/db/partitions/PartitionUpdate.java +++ b/src/java/org/apache/cassandra/db/partitions/PartitionUpdate.java @@@ -400,6 -506,24 +400,24 @@@ public class PartitionUpdate extends Ab } } } + - if (holder.staticRow != null) ++ if (this.holder.staticRow != null) + { - for (ColumnData cd : holder.staticRow.columnData()) ++ for (ColumnData cd : this.holder.staticRow.columnData()) + { + if (cd.column().isSimple()) + { + maxTimestamp = Math.max(maxTimestamp, ((Cell) cd).timestamp()); + } + else + { + ComplexColumnData complexData = (ComplexColumnData) cd; + maxTimestamp = Math.max(maxTimestamp, complexData.complexDeletion().markedForDeleteAt()); + for (Cell cell : complexData) + maxTimestamp = Math.max(maxTimestamp, cell.timestamp()); + } + } + } return maxTimestamp; } diff --cc test/unit/org/apache/cassandra/SchemaLoader.java index 2bc9bda,822ee67..50a06e1 --- a/test/unit/org/apache/cassandra/SchemaLoader.java +++ b/test/unit/org/apache/cassandra/SchemaLoader.java @@@ -387,11 -375,22 +387,20 @@@ public class SchemaLoade for (int i = 0; i < columnCount; i++) builder.addRegularColumn("val" + i, AsciiType.instance); - return builder.build() - .compression(getCompressionParameters()); + return builder; } - public static CFMetaData staticCFMD(String ksName, String cfName) ++ public static TableMetadata.Builder staticCFMD(String ksName, String cfName) + { - return CFMetaData.Builder.create(ksName, cfName) - .addPartitionKey("key", AsciiType.instance) ++ return TableMetadata.builder(ksName, cfName) ++ .addPartitionKeyColumn("key", AsciiType.instance) + .addClusteringColumn("cols", AsciiType.instance) + .addStaticColumn("val", AsciiType.instance) - .addRegularColumn("val2", AsciiType.instance) - .build(); ++ .addRegularColumn("val2", AsciiType.instance); + } + - public static CFMetaData denseCFMD(String ksName, String cfName) + public static TableMetadata.Builder denseCFMD(String ksName, String cfName) { return denseCFMD(ksName, cfName, AsciiType.instance); } diff --cc test/unit/org/apache/cassandra/db/RecoveryManagerTest.java index 7e397c1,cc9c667..527c6a7 --- a/test/unit/org/apache/cassandra/db/RecoveryManagerTest.java +++ b/test/unit/org/apache/cassandra/db/RecoveryManagerTest.java @@@ -275,6 -276,34 +277,34 @@@ public class RecoveryManagerTes } @Test + public void testRecoverPITStatic() throws Exception + { + CommitLog.instance.resetUnsafe(true); + Keyspace keyspace1 = Keyspace.open(KEYSPACE1); + ColumnFamilyStore cfs = keyspace1.getColumnFamilyStore(CF_STATIC1); + Date date = CommitLogArchiver.format.parse("2112:12:12 12:12:12"); + long timeMS = date.getTime() - 5000; + + + for (int i = 0; i < 10; ++i) + { + long ts = TimeUnit.MILLISECONDS.toMicros(timeMS + (i * 1000)); - new RowUpdateBuilder(cfs.metadata, ts, "name-" + i) ++ new RowUpdateBuilder(cfs.metadata(), ts, "name-" + i) + .add("val", Integer.toString(i)) + .build() + .apply(); + } + + // Sanity check row count prior to clear and replay + assertEquals(10, Util.getAll(Util.cmd(cfs).build()).size()); + + keyspace1.getColumnFamilyStore(CF_STATIC1).clearUnsafe(); + CommitLog.instance.resetUnsafe(false); + + assertEquals(6, Util.getAll(Util.cmd(cfs).build()).size()); + } + + @Test public void testRecoverPITUnordered() throws Exception { CommitLog.instance.resetUnsafe(true); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org