From 2a458ba01dae3b35b62ad2ef361e1acb567c97f0 Mon Sep 17 00:00:00 2001 From: Bereng Date: Wed, 14 Jun 2023 09:41:44 +0200 Subject: [PATCH] Improved DeletionTime serialization --- .../org/apache/cassandra/db/DeletionTime.java | 95 ++++- .../io/sstable/format/bti/PartitionIndex.java | 2 +- .../io/sstable/format/bti/RowIndexReader.java | 15 +- .../format/bti/RowIndexReverseIterator.java | 5 +- .../org/apache/cassandra/io/tries/Walker.java | 15 +- .../da-1-bti-CompressionInfo.db | Bin 207 -> 207 bytes .../legacy_da_clust/da-1-bti-Data.db | Bin 8660 -> 8616 bytes .../legacy_da_clust/da-1-bti-Digest.crc32 | 2 +- .../legacy_da_clust/da-1-bti-Partitions.db | Bin 62 -> 62 bytes .../legacy_da_clust/da-1-bti-Rows.db | Bin 563 -> 508 bytes .../legacy_da_clust/da-1-bti-Statistics.db | Bin 7312 -> 7312 bytes .../da-1-bti-CompressionInfo.db | Bin 199 -> 199 bytes .../legacy_da_clust_counter/da-1-bti-Data.db | Bin 7767 -> 7408 bytes .../da-1-bti-Digest.crc32 | 2 +- .../da-1-bti-Partitions.db | Bin 62 -> 62 bytes .../legacy_da_clust_counter/da-1-bti-Rows.db | Bin 563 -> 508 bytes .../da-1-bti-Statistics.db | Bin 7321 -> 7321 bytes .../da-1-bti-CompressionInfo.db | Bin 47 -> 47 bytes .../legacy_da_simple/da-1-bti-Data.db | Bin 88 -> 79 bytes .../legacy_da_simple/da-1-bti-Digest.crc32 | 2 +- .../legacy_da_simple/da-1-bti-Partitions.db | Bin 59 -> 58 bytes .../legacy_da_simple/da-1-bti-Statistics.db | Bin 4822 -> 4822 bytes .../da-1-bti-CompressionInfo.db | Bin 47 -> 47 bytes .../legacy_da_simple_counter/da-1-bti-Data.db | Bin 140 -> 133 bytes .../da-1-bti-Digest.crc32 | 2 +- .../da-1-bti-Partitions.db | Bin 60 -> 60 bytes .../da-1-bti-Statistics.db | Bin 4831 -> 4831 bytes .../oa-1-big-CompressionInfo.db | Bin 207 -> 207 bytes .../legacy_oa_clust/oa-1-big-Data.db | Bin 8630 -> 8609 bytes .../legacy_oa_clust/oa-1-big-Digest.crc32 | 2 +- .../legacy_oa_clust/oa-1-big-Index.db | Bin 157553 -> 157498 bytes .../legacy_oa_clust/oa-1-big-Statistics.db | Bin 7312 -> 7312 bytes .../oa-1-big-CompressionInfo.db | Bin 199 -> 199 bytes .../legacy_oa_clust_counter/oa-1-big-Data.db | Bin 7718 -> 7352 bytes .../oa-1-big-Digest.crc32 | 2 +- .../legacy_oa_clust_counter/oa-1-big-Index.db | Bin 157553 -> 157498 bytes .../oa-1-big-Statistics.db | Bin 7321 -> 7321 bytes .../oa-1-big-CompressionInfo.db | Bin 47 -> 47 bytes .../legacy_oa_simple/oa-1-big-Data.db | Bin 88 -> 78 bytes .../legacy_oa_simple/oa-1-big-Digest.crc32 | 2 +- .../legacy_oa_simple/oa-1-big-Index.db | Bin 26 -> 25 bytes .../legacy_oa_simple/oa-1-big-Statistics.db | Bin 4822 -> 4822 bytes .../oa-1-big-CompressionInfo.db | Bin 47 -> 47 bytes .../legacy_oa_simple_counter/oa-1-big-Data.db | Bin 141 -> 134 bytes .../oa-1-big-Digest.crc32 | 2 +- .../oa-1-big-Index.db | Bin 27 -> 27 bytes .../oa-1-big-Statistics.db | Bin 4831 -> 4831 bytes .../microbench/DeletionTimeDeSerBench.java | 366 ++++++++++++++++++ .../db/compaction/CompactionsTest.java | 8 +- .../sstable/format/big/RowIndexEntryTest.java | 16 +- .../transport/DeletionTimeDeSerTest.java | 97 +++++ 51 files changed, 589 insertions(+), 46 deletions(-) create mode 100644 test/microbench/org/apache/cassandra/test/microbench/DeletionTimeDeSerBench.java create mode 100644 test/unit/org/apache/cassandra/transport/DeletionTimeDeSerTest.java diff --git a/src/java/org/apache/cassandra/db/DeletionTime.java b/src/java/org/apache/cassandra/db/DeletionTime.java index 60ac407a76..a0450a0fd1 100644 --- a/src/java/org/apache/cassandra/db/DeletionTime.java +++ b/src/java/org/apache/cassandra/db/DeletionTime.java @@ -195,42 +195,103 @@ public class DeletionTime implements Comparable, IMeasurableMemory return legacySerializer; } - // Serializer for Usigned Integer ldt + /* Serializer for Usigned Integer ldt + * + * ldt is encoded as a uint in seconds since unix epoch, it can go up o 2106-02-07T06:28:13+00:00 only. + * mfda is a positive timestamp. We use the sign bit to encode LIVE DeletionTimes + * Throw IOException to mark sstable as corrupt. + */ public static class Serializer implements ISerializer { + // We use the sign bit to signal LIVE DeletionTimes + private final static int IS_LIVE_DELETION = 0b1000_0000; + public void serialize(DeletionTime delTime, DataOutputPlus out) throws IOException { - out.writeInt(delTime.localDeletionTimeUnsignedInteger); - out.writeLong(delTime.markedForDeleteAt()); + if (delTime == LIVE) + out.writeByte(IS_LIVE_DELETION); + else + { + // The sign bit is zero here, so we can write a long directly + out.writeLong(delTime.markedForDeleteAt()); + out.writeInt(delTime.localDeletionTimeUnsignedInteger); + } } public DeletionTime deserialize(DataInputPlus in) throws IOException { - int localDeletionTimeUnsignedInteger = in.readInt(); - long mfda = in.readLong(); - return mfda == Long.MIN_VALUE && localDeletionTimeUnsignedInteger == Cell.NO_DELETION_TIME_UNSIGNED_INTEGER - ? LIVE - : new DeletionTime(mfda, localDeletionTimeUnsignedInteger); + int flags = in.readByte(); + if ((flags & IS_LIVE_DELETION) != 0) + { + if ((flags & 0xFF) != IS_LIVE_DELETION) + throw new IOException("Corrupted sstable. Invalid flags found deserializing DeletionTime: " + Integer.toBinaryString(flags & 0xFF)); + return LIVE; + } + else + { + // Read the remaining 7 bytes + int bytes1 = in.readByte(); + int bytes2 = in.readShort(); + int bytes4 = in.readInt(); + + long mfda = readBytesToMFDA(flags, bytes1, bytes2, bytes4); + int localDeletionTimeUnsignedInteger = in.readInt(); + + return new DeletionTime(mfda, localDeletionTimeUnsignedInteger); + } } - public DeletionTime deserialize(ByteBuffer buf, int offset) + public DeletionTime deserialize(ByteBuffer buf, int offset) throws IOException { - int localDeletionTimeUnsignedInteger = buf.getInt(offset); - long mfda = buf.getLong(offset + 4); - return mfda == Long.MIN_VALUE && localDeletionTimeUnsignedInteger == Cell.NO_DELETION_TIME_UNSIGNED_INTEGER - ? LIVE - : new DeletionTime(mfda, localDeletionTimeUnsignedInteger); + int flags = buf.get(offset); + if ((flags & IS_LIVE_DELETION) != 0) + { + if ((flags & 0xFF) != IS_LIVE_DELETION) + throw new IOException("Corrupted sstable. Invalid flags found deserializing DeletionTime: " + Integer.toBinaryString(flags & 0xFF)); + return LIVE; + } + else + { + long mfda = buf.getLong(offset); + int localDeletionTimeUnsignedInteger = buf.getInt(offset + TypeSizes.LONG_SIZE); + + return new DeletionTime(mfda, localDeletionTimeUnsignedInteger); + } } public void skip(DataInputPlus in) throws IOException { - in.skipBytesFully(4 + 8); + int flags = in.readByte(); + if ((flags & IS_LIVE_DELETION) != 0) + { + if ((flags & 0xFF) != IS_LIVE_DELETION) + throw new IOException("Corrupted sstable. Invalid flags found deserializing DeletionTime: " + Integer.toBinaryString(flags & 0xFF)); + // We read the flags already and there's nothing left to skip over + return; + } + else + // We read the flags already but there is mfda and ldt to skip over still + in.skipBytesFully(TypeSizes.LONG_SIZE - 1 + TypeSizes.INT_SIZE); } public long serializedSize(DeletionTime delTime) { - return TypeSizes.sizeof(Integer.MAX_VALUE) - + TypeSizes.sizeof(delTime.markedForDeleteAt()); + if (delTime == LIVE) + // Just the flags + return 1; + else + // 1 for the flags, 7 for mfda and 4 for ldt + return TypeSizes.LONG_SIZE + + TypeSizes.INT_SIZE; + } + + private long readBytesToMFDA(int flagsByte, int bytes1, int bytes2, int bytes4) + { + long mfda = flagsByte & 0xFFL; + mfda = (mfda << 8) + (bytes1 & 0xFFL); + mfda = (mfda << 16) + (bytes2 & 0xFFFFL); + mfda = (mfda << 32) + (bytes4 & 0xFFFFFFFFL); + return mfda; } } diff --git a/src/java/org/apache/cassandra/io/sstable/format/bti/PartitionIndex.java b/src/java/org/apache/cassandra/io/sstable/format/bti/PartitionIndex.java index e71355007a..12d35d7cd6 100644 --- a/src/java/org/apache/cassandra/io/sstable/format/bti/PartitionIndex.java +++ b/src/java/org/apache/cassandra/io/sstable/format/bti/PartitionIndex.java @@ -443,7 +443,7 @@ public class PartitionIndex implements SharedCloseable } } - private void dumpTrie(PrintStream out) + private void dumpTrie(PrintStream out) throws IOException { try (Reader rdr = openReader()) { diff --git a/src/java/org/apache/cassandra/io/sstable/format/bti/RowIndexReader.java b/src/java/org/apache/cassandra/io/sstable/format/bti/RowIndexReader.java index 3bb75f45db..3bfd2903fc 100644 --- a/src/java/org/apache/cassandra/io/sstable/format/bti/RowIndexReader.java +++ b/src/java/org/apache/cassandra/io/sstable/format/bti/RowIndexReader.java @@ -76,8 +76,9 @@ public class RowIndexReader extends Walker /** * Computes the floor for a given key. + * @throws IOException */ - public IndexInfo separatorFloor(ByteComparable key) + public IndexInfo separatorFloor(ByteComparable key) throws IOException { // Check for a prefix and find closest smaller branch. IndexInfo res = prefixAndNeighbours(key, RowIndexReader::readPayload); @@ -96,23 +97,23 @@ public class RowIndexReader extends Walker return getCurrentIndexInfo(); } - public IndexInfo min() + public IndexInfo min() throws IOException { goMin(root); return getCurrentIndexInfo(); } - protected IndexInfo getCurrentIndexInfo() + protected IndexInfo getCurrentIndexInfo() throws IOException { return readPayload(payloadPosition(), payloadFlags()); } - protected IndexInfo readPayload(int ppos, int bits) + protected IndexInfo readPayload(int ppos, int bits) throws IOException { return readPayload(buf, ppos, bits, version); } - static IndexInfo readPayload(ByteBuffer buf, int ppos, int bits, Version version) + static IndexInfo readPayload(ByteBuffer buf, int ppos, int bits, Version version) throws IOException { long dataOffset; if (bits == 0) @@ -183,12 +184,12 @@ public class RowIndexReader extends Walker // debug/test code @SuppressWarnings("unused") - public void dumpTrie(PrintStream out) + public void dumpTrie(PrintStream out) throws IOException { dumpTrie(out, RowIndexReader::dumpRowIndexEntry, version); } - static String dumpRowIndexEntry(ByteBuffer buf, int ppos, int bits, Version version) + static String dumpRowIndexEntry(ByteBuffer buf, int ppos, int bits, Version version) throws IOException { IndexInfo ii = readPayload(buf, ppos, bits, version); diff --git a/src/java/org/apache/cassandra/io/sstable/format/bti/RowIndexReverseIterator.java b/src/java/org/apache/cassandra/io/sstable/format/bti/RowIndexReverseIterator.java index 0a0ee00ffd..0d7878973b 100644 --- a/src/java/org/apache/cassandra/io/sstable/format/bti/RowIndexReverseIterator.java +++ b/src/java/org/apache/cassandra/io/sstable/format/bti/RowIndexReverseIterator.java @@ -17,6 +17,7 @@ */ package org.apache.cassandra.io.sstable.format.bti; +import java.io.IOException; import java.io.PrintStream; import org.apache.cassandra.io.sstable.format.Version; @@ -44,7 +45,7 @@ class RowIndexReverseIterator extends ReverseValueIterator> implements AutoCloseable public interface Extractor { - RESULT extract(VALUE walker, int payloadPosition, int payloadFlags); + RESULT extract(VALUE walker, int payloadPosition, int payloadFlags) throws IOException; } /** @@ -268,9 +269,10 @@ public class Walker> implements AutoCloseable * is in the trie when looking for 'abc' or 'ac', but accepted when looking for 'aa'). * In order to not have to go back to data that may have exited cache, payloads are extracted when the node is * visited (instead of saving the node's position), which requires an extractor to be passed as parameter. + * @throws IOException */ @SuppressWarnings("unchecked") - public RESULT prefix(ByteComparable key, Extractor extractor) + public RESULT prefix(ByteComparable key, Extractor extractor) throws IOException { RESULT payload = null; @@ -304,9 +306,10 @@ public class Walker> implements AutoCloseable * does not take that into account. E.g. if trie contains "abba", "as" and "ask", looking for "asking" will find * "ask" as the match, but max(lesserBranch) will point to "abba" instead of the correct "as". This problem can * only occur if there is a valid prefix match. + * @throws IOException */ @SuppressWarnings("unchecked") - public RESULT prefixAndNeighbours(ByteComparable key, Extractor extractor) + public RESULT prefixAndNeighbours(ByteComparable key, Extractor extractor) throws IOException { RESULT payload = null; greaterBranch = NONE; @@ -358,16 +361,16 @@ public class Walker> implements AutoCloseable public interface PayloadToString { - String payloadAsString(ByteBuffer buf, int payloadPos, int payloadFlags, Version version); + String payloadAsString(ByteBuffer buf, int payloadPos, int payloadFlags, Version version) throws IOException; } - public void dumpTrie(PrintStream out, PayloadToString payloadReader, Version version) + public void dumpTrie(PrintStream out, PayloadToString payloadReader, Version version) throws IOException { out.print("ROOT"); dumpTrie(out, payloadReader, root, "", version); } - private void dumpTrie(PrintStream out, PayloadToString payloadReader, long node, String indent, Version version) + private void dumpTrie(PrintStream out, PayloadToString payloadReader, long node, String indent, Version version) throws IOException { go(node); int bits = payloadFlags(); diff --git a/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust/da-1-bti-CompressionInfo.db b/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust/da-1-bti-CompressionInfo.db index 4f8f029e9a0d7095f01b6230c1ca3c8d32f83ab4..a0dbaf1f88ad509c303fc6c7f236a5fd56d96897 100644 GIT binary patch literal 207 zcmZSJ^@%cZ&d)6yA+)eQgcf-Pp~a>{XbF1=E%_TlOK*VCvY`-K K?jM9!SOx%bKo!OS diff --git a/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust/da-1-bti-Data.db b/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust/da-1-bti-Data.db index ed53ab7cb32fd3394831df38384a29c356a0e125..4daf0fcb64a75d5eaa8f3d76e1249265d612671c 100644 GIT binary patch literal 8616 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 diff --git a/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust/da-1-bti-Digest.crc32 b/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust/da-1-bti-Digest.crc32 index 4a59ffcab2..4c59b00640 100644 --- a/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust/da-1-bti-Digest.crc32 +++ b/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust/da-1-bti-Digest.crc32 @@ -1 +1 @@ -1178851237 \ No newline at end of file +1983729251 \ No newline at end of file diff --git a/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust/da-1-bti-Partitions.db b/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust/da-1-bti-Partitions.db index daf1b01ec12e7451c1daad819682b16e15a86e4a..6e4273411ff0d56fe282bcf17609e3074b263c03 100644 GIT binary patch delta 25 gcmcDs6XxKI0|s8+1}0HP zCM`y&9U%-%nG6s+>=~Kr7{GS?2iox;$&Pds|G7NZtY30sv>*ac=+s literal 563 zcmZP)$rf{aUog93A7G~pK~It`@;sbt_7QQh6mZI>1v_T WAzu3W(D<-$D_wnPazu&?)j|LpaAXDm diff --git a/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust/da-1-bti-Statistics.db b/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust/da-1-bti-Statistics.db index bfb5b1fe099c5f911170a17d36d075bfc17d159c..9a47c5fde904e9aeb2d4a2036fac360348019460 100644 GIT binary patch delta 158 zcmbPWIl*$naY4h*@-vAp4BS7H8Q2(pf2*9G0H$lQ6#qj30~FZLV$8Z)qb|Dnhu{Iu zAc!`G@3lZ#Mj%4sL)joB85oUJ?l_ohc^uj_kRKL-E+ diff --git a/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust_counter/da-1-bti-CompressionInfo.db b/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust_counter/da-1-bti-CompressionInfo.db index a15fed64cf1513f359e6c69669f14fddc3d79ce8..849043e8d14f32bb2dc9707fd26a80a937593246 100644 GIT binary patch literal 199 zcmZSJ^@%cZ&d)6fzU!h5L);Ygch}g&|9(h diff --git a/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust_counter/da-1-bti-Data.db b/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust_counter/da-1-bti-Data.db index 476fbae69b5c750298c58f0397b097a7d4fb6f7c..4458afd2be0b1b32ce175d23f3ba7a72f339a3f4 100644 GIT binary patch literal 7408 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 literal 7767 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 diff --git a/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust_counter/da-1-bti-Digest.crc32 b/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust_counter/da-1-bti-Digest.crc32 index 79735e8a66..947363bf18 100644 --- a/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust_counter/da-1-bti-Digest.crc32 +++ b/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust_counter/da-1-bti-Digest.crc32 @@ -1 +1 @@ -1260299575 \ No newline at end of file +2020062012 \ No newline at end of file diff --git a/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust_counter/da-1-bti-Partitions.db b/test/data/legacy-sstables/da/legacy_tables/legacy_da_clust_counter/da-1-bti-Partitions.db index daf1b01ec12e7451c1daad819682b16e15a86e4a..6e4273411ff0d56fe282bcf17609e3074b263c03 100644 GIT binary patch delta 25 gcmcDs6XxKI UX>W`1p*y~`x5eb}g>0ZL0N)8}-2eap literal 563 zcmZP)p2(yw8Ng&@#>UL#r_PkPK8VTKoQ>IPAycWjupu);$6jWJIj#ZB1|}9<94yQX z>rXQ?91dn?xOO{$+0fLI2PF0?mYLy;TmYM)k+F$|m8+$S00)br10O#FqX7di?|&d@ zV1NK7;VDe&GBE43nG!ccty{uWY7MsT5YRd=BS2j0~FZLU}2fM%kRMEAA$!s zgCN=%{#OBI8G#6i4`qXlWMDK>x#M82<#A}c0Ed)^zW*HtMgv9@`wtK^1D5@X|MOs@ Y$9#DY28PMJLRyneWD;3ob{VGw01fasL;wH) delta 158 zcmbPfIn#2(aY4h58&-R}8F(00F|hvYS-RkD2AEzZx$r*}FhGI*Oatbkg8Z$Ue+VAn z41#E5WR(WWG6E42AIb(9$-sEjFt2yjSC=)5mmE)b_MdT=fzg1`r2YrQ%*e~0xqt3C Yem|C*!N4$?S4eBJiA*BPwq>$D0JZ%)h5!Hn diff --git a/test/data/legacy-sstables/da/legacy_tables/legacy_da_simple/da-1-bti-CompressionInfo.db b/test/data/legacy-sstables/da/legacy_tables/legacy_da_simple/da-1-bti-CompressionInfo.db index ef683177e8f648a5e67570980ba0d9e79709ac39..f30e3ceb791e51673e5b45c6240fe7591b1b8cd4 100644 GIT binary patch delta 18 UcmdPbpPh($ delta 18 UcmdPbpP7X%m4rY diff --git a/test/data/legacy-sstables/da/legacy_tables/legacy_da_simple/da-1-bti-Data.db b/test/data/legacy-sstables/da/legacy_tables/legacy_da_simple/da-1-bti-Data.db index 33d7cdac7d03625c5f01a00478d5fba55b410d2f..827bcc2784cdfd5bb6d683e5ac84c5332bcf2c75 100644 GIT binary patch literal 79 zcmXS8U|{$o$iQgOpu*3>z`>oCpRbUVSOmmXj0}v14Jv{x2i|!}FbEh)FxVWdy98tz c16hZ}H6$1WO(Ympd!i&50>H`-n(9vm0MFz`!txfzjYU5Hv6_GW=vy;pb=I;7-fWS4c`M0^%x021Y|gh8RKqgGUvV8KjMr k8Eg(ae*m(Kfvh8Hjmiu%Cdv$|PhTiA1c24wcIOfU0AGC=NdN!< diff --git a/test/data/legacy-sstables/da/legacy_tables/legacy_da_simple/da-1-bti-Digest.crc32 b/test/data/legacy-sstables/da/legacy_tables/legacy_da_simple/da-1-bti-Digest.crc32 index 1397dbf01a..1027de9860 100644 --- a/test/data/legacy-sstables/da/legacy_tables/legacy_da_simple/da-1-bti-Digest.crc32 +++ b/test/data/legacy-sstables/da/legacy_tables/legacy_da_simple/da-1-bti-Digest.crc32 @@ -1 +1 @@ -2099476497 \ No newline at end of file +1689908368 \ No newline at end of file diff --git a/test/data/legacy-sstables/da/legacy_tables/legacy_da_simple/da-1-bti-Partitions.db b/test/data/legacy-sstables/da/legacy_tables/legacy_da_simple/da-1-bti-Partitions.db index e20b4e2f2700a2d5278b3858fd96631b7f66fa97..dc31ba9d1a607f8ce747fbebc3863b31d2a3c390 100644 GIT binary patch literal 58 zcmdl5XK;{qU|=+0U^HQX09h!_3Z4F9hFugSO!+$7XfCBsb z!Zxdyn;n?^Lr^~$qKn~+4^Wa3h>-YDHpoN<#-oOLy{o>utXaI|c)GLyjJphs28<^4 jKOjb4D!I1h&ppTQ#~3&m7&Ip8iA|m$ diff --git a/test/data/legacy-sstables/da/legacy_tables/legacy_da_simple_counter/da-1-bti-Data.db b/test/data/legacy-sstables/da/legacy_tables/legacy_da_simple_counter/da-1-bti-Data.db index cf0cf6037b85989b6a577cd96c094d49f33803fa..ba53b399368a3eef52bc0e2bc37f7134154106ef 100644 GIT binary patch literal 133 zcmey&z`*cHf`QSXK|zCsfkB0Vv4O!z<&J~7mdBy(0vu8v`u=wq*cg6)tL$IFz{qf) zk&%JXut7nKh2g-f1VaXPqpGw91E3ItpphYi{lRi(Lk14@?;JqBF_3?VKN6_Myt=!> dkU_}AkU_tt8^}LU!>|HqEeJ3&y1(2}1OTffAZ`Ev literal 140 zcmdO5WMG)Yz-aIv2pSj|89oUsXz(*Is4y@#FdQ|^>s|HLWzFIx$J3qtXWV6A{nxW} z!POrc44Dj!j0}v1Rt))C{0s-DIodF=n=f+JuwjrfvSF}4Eb#**u=w}`8wOcp8wUOF ii$MG(s|tV$On?fGZ07_D99WwAfdK*-8Cfi@lmGy+BP&Dz diff --git a/test/data/legacy-sstables/da/legacy_tables/legacy_da_simple_counter/da-1-bti-Digest.crc32 b/test/data/legacy-sstables/da/legacy_tables/legacy_da_simple_counter/da-1-bti-Digest.crc32 index a4b6f172c8..eeb0df5bf1 100644 --- a/test/data/legacy-sstables/da/legacy_tables/legacy_da_simple_counter/da-1-bti-Digest.crc32 +++ b/test/data/legacy-sstables/da/legacy_tables/legacy_da_simple_counter/da-1-bti-Digest.crc32 @@ -1 +1 @@ -1213045656 \ No newline at end of file +2128362302 \ No newline at end of file diff --git a/test/data/legacy-sstables/da/legacy_tables/legacy_da_simple_counter/da-1-bti-Partitions.db b/test/data/legacy-sstables/da/legacy_tables/legacy_da_simple_counter/da-1-bti-Partitions.db index 773d3c8891c3128145d30327bae64f5fc3b26757..dafb436f43cb1cda891422b83cd885ce31e4b3e2 100644 GIT binary patch delta 23 fcmcDq5#-?f&tZOn(|=!1{r`d!1+@WHM+bNS diff --git a/test/data/legacy-sstables/da/legacy_tables/legacy_da_simple_counter/da-1-bti-Statistics.db b/test/data/legacy-sstables/da/legacy_tables/legacy_da_simple_counter/da-1-bti-Statistics.db index be65831af8e7adc9fd10f34fc597a9d5fe6600b2..e49dc565774f3c962590b5c078d5e152adfd2e1b 100644 GIT binary patch delta 169 zcmcbwdS7+JdPYXp%_ZDHY@3-lj&d4ymY+#vxV1EZ139S3tQk3-u9IHWxE{qHa^8ZesJ je}EXdZvTylKMyu~%=@Fjz@RZvPi*o8A#avOr_u-jX+%8% delta 180 zcmcbwdS7+JdPYG8C@_N3teX!ovI`h?+_2i)&A`L3ih=cC&(a0!UV!PPsUQDC0ZgC$ zT~lYq?bnV>{voIz4AI5#^Dt1B5r~lZP&UX!2F9a?dA+N?x~y5e;M1& diff --git a/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_clust/oa-1-big-CompressionInfo.db b/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_clust/oa-1-big-CompressionInfo.db index f0da520ba8b243baedf7b1501dece2a8a41d62c0..36e56d0806ef71026488064dbcc96508b6b22ba3 100644 GIT binary patch literal 207 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 literal 8630 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 diff --git a/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_clust/oa-1-big-Digest.crc32 b/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_clust/oa-1-big-Digest.crc32 index 8b26bdb90c..206a90a9a7 100644 --- a/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_clust/oa-1-big-Digest.crc32 +++ b/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_clust/oa-1-big-Digest.crc32 @@ -1 +1 @@ -1331566588 \ No newline at end of file +103182460 \ No newline at end of file diff --git a/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_clust/oa-1-big-Index.db b/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_clust/oa-1-big-Index.db index 52706793770043fe9d9610dcafdd2a6012c4432c..7c22f31957d8c3fc006e9cd004a7553140cf5795 100644 GIT binary patch delta 620 zcmex(j&s*JPEH0!1BL_D%q$Jt3*Ip1aI&x*yvDoz!B@syPNpe;w<~fo7H~4H{JZ@i z2U7tj>%PASuQ6}_xFC;{Dfsv1#8riyOc}p7@3jD`sr|iK-wDW{^mF?KN1!Iw8+&a~$r)XslUJO6Fp p_=qu|llAxSgRdEZwwiMq9pZU0AQl@R7ET%vi%pJ5-WdRkO#z4v`I!I! delta 663 zcmdmWj`QO=P7wx11BL_DeEk1`pn(AbHYrc2D5-=`OFGCgPBoLE@E$@2H$Yv#!hznY5}9%QS=>KsP?&3*rYj^Kf~ zg$LpmMxN~-rZEB?zzuZ>H`pPJ+?x&d087|33UPI_KC4T nuQ2^#n|$x9jSw&P(4dd?RwBlSgqF|aZG{+fAk0hrFI`0yVJ7@)v@=I<|kXX^Ym{}4RD z83fVB@N_RwmJx`M_)s>;NCrlYY4>6(avkNStWZ7i$$z;91ET?>N&OFqna!GRr~W+H X=-%(RfPrB$uaMSc6PZZnXn~UeB%(Y6 delta 157 zcmbPWIl*$naY4h58VH7YjEPD*@#mi7 X7r#OS28PMJLRyneWFnb)EdBuiPK-I^ diff --git a/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_clust_counter/oa-1-big-CompressionInfo.db b/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_clust_counter/oa-1-big-CompressionInfo.db index 77fb7011fe054914e32a26534d90b0d97a9d724f..a002214c5d6e81b9f7b3d02dd2c4a88a858d0c74 100644 GIT binary patch literal 199 zcmZSJ^@%cZ&d)6&0}z_u0747Qh0sDW5L$RDgckV+p~dPUw1g;xmTZ8~Qr{u8 GOg;eq?-Zo~ literal 199 zcmZSJ^@%cZ&d)6w<`A0y9E28(g3v;LA+$&}gcf6j(Bf?nTG9eSOYMQsGL{fp G_AUT9ITYLg diff --git a/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_clust_counter/oa-1-big-Data.db b/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_clust_counter/oa-1-big-Data.db index 665e2d7e8cd40ef3ae8461c76c65a555f5e60b0a..1c583572d1ef1245edc90abcc530c6efc7e17034 100644 GIT binary patch literal 7352 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 R98BpGls}!$-*;c*{{Zs{;X42T literal 7718 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 Pfw9@-@P*j}VY3AQi(2TY diff --git a/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_clust_counter/oa-1-big-Statistics.db b/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_clust_counter/oa-1-big-Statistics.db index 8a56ecf9d48679f6f8e35e5f7d371c23ecc5c49f..f07515b1dde5f2634f7c7803cc5d895351df1dc5 100644 GIT binary patch delta 158 zcmbPfIn#2(aY4h*@-xzN7qF|aZG{+fAkA(+mo`1l_R7@)v@`c)Rz>%8one+VAn z41#E5c-;e(WdtH5K9mhIl7UfU+P#>HTt~SnD^yQ>@?WmOz-Yi|QvU;D=0YpQpMM@~ Ybnkau$iOg}S4eBJiA*Ak!J>fK0A~O?KL7v# delta 158 zcmbPfIn#2(aY4h58h($ delta 18 UcmdPbpP7X%m4rY diff --git a/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_simple/oa-1-big-Data.db b/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_simple/oa-1-big-Data.db index 376296d5afe011317d5028b6fcec6e0fdb2b533a..baee7e3b0f26d0c540d65fa82f78361581f92972 100644 GIT binary patch literal 78 zcmXS8U|{$o$iQgOpu*3>z`>oCpRbUVSOmmXj0}v14Jv{x2N^F&FbEn+Fz9r3NiYZ) cOEB0RV($bBnMg3Gmb{c;2mq^=SD5n%0G!JbApigX literal 88 zcmZ3>z`!txfzjYU5Hv6_GW=vy;pb=I;7-fWS4c`M0^%x021Y|gh8RKqgT)fc4AMr* k3^s=J9|1fE3#08IQB?f?J) diff --git a/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_simple/oa-1-big-Digest.crc32 b/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_simple/oa-1-big-Digest.crc32 index 4a4c86e1e5..ade6ab1cb8 100644 --- a/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_simple/oa-1-big-Digest.crc32 +++ b/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_simple/oa-1-big-Digest.crc32 @@ -1 +1 @@ -1899914505 \ No newline at end of file +309360903 \ No newline at end of file diff --git a/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_simple/oa-1-big-Index.db b/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_simple/oa-1-big-Index.db index b3094bffbad9302ccd45282d2175bbeb41e862ea..e4ed7172a1baf25fa19a3414074284174d0e27ae 100644 GIT binary patch literal 25 ccmZQzG+RQpyKMyv#_sdlz zVVl*<%??cdA*de=(Zz6UFHn*Zh>-YDHpoN<#)inZc9*0am$hqraJQ=3BFn&Nz-Utc i17f6VtLmmd_Z+|Y*<~;=XiU@-n><0tiN$uO!Z83Xl|4uR diff --git a/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_simple_counter/oa-1-big-CompressionInfo.db b/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_simple_counter/oa-1-big-CompressionInfo.db index 1db9aa06b311ba8dae1bc2eaaeca080ba080a480..0476db58d0b7149e5371d2fca91467d84e31324e 100644 GIT binary patch delta 19 VcmdPbpP diff --git a/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_simple_counter/oa-1-big-Data.db b/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_simple_counter/oa-1-big-Data.db index 32f381c004aa568f13f088f2eca75abbf8e29e47..f87d977f0a13e0bf71b5fe9ae4e843c5e704c928 100644 GIT binary patch literal 134 zcmey&z`*cHf`QSXK|zCsfkB0Vv4KHj+P#>HTt~SnD^yQ>@?WmOz{c?VYv$G$42%r- z85tQE4I31+SQrlceQC(RZj`ma!vHA6AZTRBV1KY}F;Gk+TPKM@&=|-+#JtFmfkSv% gA_HR*gOG_KgMJ|sP{Dy5;RK+)Ai&5Nmz(ba0P5o*@&Et; literal 141 zcmdO5WMG)Yz-aIv2pSj|89oUsXz(*Is4y@#Ff>HIwYwzcxU5~{gS%DL7FhOiXv4s+qGg!Mz+l55V`Rf%e<)WHC}gf}Zc)J?V+<5H lY>;8Yz@h%D!-hfD#D+otfgw=-fX=D_1_)qew8|4d3jh~9Bzph= diff --git a/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_simple_counter/oa-1-big-Digest.crc32 b/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_simple_counter/oa-1-big-Digest.crc32 index 497ae8200d..f7414d2c73 100644 --- a/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_simple_counter/oa-1-big-Digest.crc32 +++ b/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_simple_counter/oa-1-big-Digest.crc32 @@ -1 +1 @@ -3169912797 \ No newline at end of file +2437993698 \ No newline at end of file diff --git a/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_simple_counter/oa-1-big-Index.db b/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_simple_counter/oa-1-big-Index.db index 59e65cab85e287ef068ea9b6ef8bea46f0d1664b..4cb2af35d17d4fb23502391939a630f8fe20b45b 100644 GIT binary patch literal 27 ecmZQzG+5=Lb}!nk1*kThv{#{d8(*aT1j diff --git a/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_simple_counter/oa-1-big-Statistics.db b/test/data/legacy-sstables/oa/legacy_tables/legacy_oa_simple_counter/oa-1-big-Statistics.db index 92f283148024409daf355dbdf6d305c2f8c8e491..9171309ff9b5877816c4aeb4162eac207ee8cffa 100644 GIT binary patch delta 169 zcmcbwdS7+JdPYXp%_ZDHY@3-lj&d4ymYe+cRaLv%4bFab(30ud4)$_AOpz^F0pUQ9) TEST_DTS_70PC_LIVE = generateDTs(70); + final static ArrayList TEST_DTS_30PC_LIVE = generateDTs(30); + + // Parameters + final static String ncSstableParam = "NC"; + final static String oaSstableParam = "OA"; + @Param({ ncSstableParam, oaSstableParam }) + String sstableParam; + + final static String live70PcParam = "70PcLive"; + final static String live30PcParam = "30PcLive"; + @Param({ live70PcParam, live30PcParam }) + String liveDTPcParam; + + final static String RAMParam = "RAM"; + final static String diskParam = "Disk"; + @Param({ RAMParam, diskParam }) + String diskRAMParam; + + // Files + File serMMapedFile = new File(DeletionTimeDeSerBench.class + "_Sermmap"); + ByteBuffer serMMap = allocateMmapedByteBuffer(serMMapedFile, BUFFER_SIZE); + File deserMMapedFile = new File(DeletionTimeDeSerBench.class + "_Desermmap"); + ByteBuffer deserMMap = allocateMmapedByteBuffer(deserMMapedFile, BUFFER_SIZE); + File diskFile = new File(DeletionTimeDeSerBench.class + "_DTBenchTest"); + + @TearDown + public void tearDown() + { + serMMapedFile.delete(); + deserMMapedFile.delete(); + diskFile.delete(); + } + + @Benchmark + public void testE2ESerializeDT(final Blackhole bh) throws IOException + { + ByteBuffer buffer = serMMap; + Serializer serializer = getSerializer(sstableParam); + ArrayList dts = getDTs(liveDTPcParam); + + try(DataOutputStreamPlus out = getSerOut(diskRAMParam, serMMap)) + { + for (int i = 0, m = dts.size(); i < m; i++) + serializer.serialize(dts.get(i), out); + bh.consume(out); + } + + bh.consume(buffer); + bh.consume(serializer); + bh.consume(dts); + buffer.clear(); + } + + @Benchmark + public void testE2EDeSerializeDT(final Blackhole bh) throws IOException + { + ByteBuffer buffer = deserMMap; + Serializer serializer = getSerializer(sstableParam); + ArrayList dts = getDTs(liveDTPcParam); + + try(DataOutputStreamPlus out = getSerOut(diskRAMParam, deserMMap)) + { + for (int i = 0, m = dts.size(); i < m; i++) + serializer.serialize(dts.get(i), out); + bh.consume(out); + } + + DataInputPlus in = getDeSerIn(diskRAMParam, deserMMap); + for (int i = 0, m = dts.size(); i < m; i++) + serializer.deserialize(in); + + bh.consume(buffer); + bh.consume(serializer); + bh.consume(dts); + bh.consume(in); + buffer.clear(); + } + + /** + * Test the impact of the different bit ops and write calls. Against memory only. + */ + @Benchmark + public void testRawAlgWrites(final Blackhole bh) + { + if (diskRAMParam != RAMParam) + return; + + ArrayList dts = getDTs(liveDTPcParam); + ByteBuffer buffer = ByteBuffer.allocate(DT_STD_SIZE); + + if (sstableParam == oaSstableParam) + { + for (int i = 0, m = dts.size(); i < m; i++) + { + buffer.clear(); + if (dts.get(i).equals(DeletionTime.LIVE)) + buffer.put((byte) 0b1000_0000); + else + { + buffer.putLong(Math.abs(random.nextLong())); + buffer.putInt(Math.abs(random.nextInt())); + } + } + } + else + { + for (int i = 0, m = dts.size(); i < m; i++) + { + buffer.clear(); + buffer.putLong(Math.abs(random.nextLong())); + buffer.putInt(Math.abs(random.nextInt())); + } + } + + bh.consume(dts); + bh.consume(buffer); + } + + /** + * Test the impact of the different bit ops and read calls. Against memory only. + */ + @Benchmark + public void testRawAlgReads(final Blackhole bh) + { + if (diskRAMParam != RAMParam) + return; + + ArrayList dts = getDTs(liveDTPcParam); + ByteBuffer buffer = ByteBuffer.allocate(DT_STD_SIZE); + buffer.putLong(random.nextLong() & Long.MAX_VALUE); // to prevent Match.abs(MIN_VALUE) == MIN_VALUE + buffer.putInt(random.nextInt() & Integer.MAX_VALUE); + + if (sstableParam == oaSstableParam) + { + for (int i = 0, m = dts.size(); i < m; i++) + { + buffer.clear(); + + if (dts.get(i).equals(DeletionTime.LIVE)) + { + // LIVE: we only read the flags Byte + byte b = buffer.get(); + b = (byte) (b & 0b1000_0000 & 0xFF); + bh.consume(b); + } + else + { + // The flag + byte flag = buffer.get(); + + // 7 bytes mfda + int bytes4 = buffer.getInt(); + int bytes2 = buffer.getShort(); + int bytes1 = buffer.get(); + + long mfda = flag & 0xFFL; + mfda = (mfda << 32) + (bytes4 & 0xFFFFFFFFL); + mfda = (mfda << 16) + (bytes2 & 0xFFFFL); + mfda = (mfda << 8) + (bytes1 & 0xFFL); + + // The ldt + int ldt = buffer.getInt(); + + bh.consume(flag); + bh.consume(bytes4); + bh.consume(bytes2); + bh.consume(bytes1); + bh.consume(mfda); + bh.consume(ldt); + } + } + } + else + { + for (int i = 0, m = dts.size(); i < m; i++) + { + buffer.clear(); + long mfda = buffer.getLong(); + int ldt = buffer.getInt(); + + bh.consume(mfda); + bh.consume(ldt); + } + } + + bh.consume(dts); + bh.consume(buffer); + } + + private DataInputPlus getDeSerIn(String value, ByteBuffer maybeBackingBB) + { + switch (value) + { + case RAMParam: + maybeBackingBB.rewind(); + return new DataInputBuffer(maybeBackingBB, false); + + case diskParam: + try + { + return new FileInputStreamPlus(new org.apache.cassandra.io.util.File(diskFile)); + } + catch(NoSuchFileException e) + { + throw new RuntimeException(e); + } + + default: + throw new IllegalStateException("Unknown backing media for deser."); + } + } + + private DataOutputStreamPlus getSerOut(String value, ByteBuffer maybeBackingBB) + { + switch (value) + { + case RAMParam: + maybeBackingBB.rewind(); + return new DataOutputBuffer(maybeBackingBB); + + case diskParam: + try + { + return new FileOutputStreamPlus(new org.apache.cassandra.io.util.File(diskFile)); + } + catch(NoSuchFileException e) + { + throw new RuntimeException(e); + } + + default: + throw new IllegalStateException("Unknown backing media for ser."); + } + } + + /** + * Generates DeletionTimes where livePercentage are DeletionTime.LIVE + * @param livePercentage + * @return + */ + private static ArrayList generateDTs(int livePercentage) + { + ArrayList dts = new ArrayList<>(BUFFER_SIZE / DT_STD_SIZE); + for (int i = 0; i < (BUFFER_SIZE / (DT_STD_SIZE)); i++) + { + DeletionTime dt; + + if ((random.nextInt() % 100) < livePercentage) + dt = DeletionTime.LIVE; + else + dt = DeletionTime.build(Math.abs(random.nextLong()), Math.abs(random.nextInt())); + + dts.add(dt); + } + + return dts; + } + + private static ArrayList getDTs(String value) + { + switch (value) + { + case live70PcParam: + return TEST_DTS_70PC_LIVE; + + case live30PcParam: + return TEST_DTS_30PC_LIVE; + + default: + throw new IllegalStateException("Unknown live DT PC"); + } + } + + private static Serializer getSerializer(String value) + { + switch (value) + { + case ncSstableParam: + return new DeletionTime.LegacySerializer(); + + case oaSstableParam: + return new DeletionTime.Serializer(); + + default: + throw new IllegalStateException("Unknown serializer"); + } + } + + private static ByteBuffer allocateMmapedByteBuffer(File mmapFile, int bufferSize) + { + try(RandomAccessFile file = new RandomAccessFile(mmapFile, "rw"); FileChannel ch = file.getChannel()) + { + return ch.map(FileChannel.MapMode.READ_WRITE, 0, bufferSize); + } + catch(IOException e) + { + throw new RuntimeException(e); + } + } +} diff --git a/test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java b/test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java index 6fbf0261a3..435b19ad03 100644 --- a/test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java +++ b/test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java @@ -186,12 +186,14 @@ public class CompactionsTest // disable compaction while flushing store.disableAutoCompaction(); - //Populate sstable1 with with keys [0a..29a] - populate(KEYSPACE1, CF_STANDARD1, 0, 29, "a",3); //ttl=3s + //Populate sstable1 with with keys [0a..29aaaaaaaaaaa] Partitions have to be big enough + //that prevent the size dependent AbstractCompactionStrategy.worthDroppingTombstones to trigger + //a compaction. + populate(KEYSPACE1, CF_STANDARD1, 0, 29, "aaaaaaaaaaa",3); //ttl=3s Util.flush(store); //Populate sstable2 with with keys [0b..29b] (keys do not overlap with SSTable1, but the range is almost fully covered) - long timestamp2 = populate(KEYSPACE1, CF_STANDARD1, 0, 29, "b", 3); //ttl=3s + long timestamp2 = populate(KEYSPACE1, CF_STANDARD1, 0, 29, "bbbbbbbbbbb", 3); //ttl=3s Util.flush(store); assertEquals(2, store.getLiveSSTables().size()); diff --git a/test/unit/org/apache/cassandra/io/sstable/format/big/RowIndexEntryTest.java b/test/unit/org/apache/cassandra/io/sstable/format/big/RowIndexEntryTest.java index 13fb3a7fc0..9a5673dc6e 100644 --- a/test/unit/org/apache/cassandra/io/sstable/format/big/RowIndexEntryTest.java +++ b/test/unit/org/apache/cassandra/io/sstable/format/big/RowIndexEntryTest.java @@ -135,7 +135,13 @@ public class RowIndexEntryTest extends CQLTester doubleSerializer.build(null, partitionKey(42L), Arrays.asList(cn(42), cn(43), cn(44)), 0L); - assertEquals(doubleSerializer.rieOldSerialized, doubleSerializer.rieNewSerialized); + + RowIndexEntry newRie = doubleSerializer.rieSerializer.deserialize(new DataInputBuffer(doubleSerializer.rieNewSerialized, false), 0); + Pre_C_11206_RowIndexEntry oldRie = doubleSerializer.oldSerializer.deserialize(new DataInputBuffer(doubleSerializer.rieOldSerialized, false)); + + assertEquals(oldRie.position, newRie.getPosition()); + assertEquals(oldRie.deletionTime(), newRie.deletionTime()); + assertEquals(oldRie.columnsIndex().size(), newRie.blockCount()); } // partition with multiple IndexInfo @@ -144,7 +150,13 @@ public class RowIndexEntryTest extends CQLTester doubleSerializer.build(null, partitionKey(42L), Arrays.asList(cn(42), cn(43), cn(44), cn(45), cn(46), cn(47), cn(48), cn(49), cn(50), cn(51)), 0L); - assertEquals(doubleSerializer.rieOldSerialized, doubleSerializer.rieNewSerialized); + + RowIndexEntry newRie = doubleSerializer.rieSerializer.deserialize(new DataInputBuffer(doubleSerializer.rieNewSerialized, false), 0); + Pre_C_11206_RowIndexEntry oldRie = doubleSerializer.oldSerializer.deserialize(new DataInputBuffer(doubleSerializer.rieOldSerialized, false)); + + assertEquals(oldRie.position, newRie.getPosition()); + assertEquals(oldRie.deletionTime(), newRie.deletionTime()); + assertEquals(oldRie.columnsIndex().size(), newRie.blockCount()); } } diff --git a/test/unit/org/apache/cassandra/transport/DeletionTimeDeSerTest.java b/test/unit/org/apache/cassandra/transport/DeletionTimeDeSerTest.java new file mode 100644 index 0000000000..670b5daf09 --- /dev/null +++ b/test/unit/org/apache/cassandra/transport/DeletionTimeDeSerTest.java @@ -0,0 +1,97 @@ +/* + * 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.transport; + +import java.io.IOException; +import java.nio.ByteBuffer; + +import org.junit.BeforeClass; +import org.junit.Test; + +import org.apache.cassandra.config.DatabaseDescriptor; +import org.apache.cassandra.db.DeletionTime; +import org.apache.cassandra.io.sstable.format.big.BigFormat; +import org.apache.cassandra.io.util.DataInputBuffer; +import org.apache.cassandra.io.util.DataOutputBuffer; + +import static org.junit.Assert.assertEquals; + +/** + * We test here serialization of DTs and some of it's sentinel values + * + */ +public class DeletionTimeDeSerTest +{ + @BeforeClass + public static void setupDD() + { + DatabaseDescriptor.daemonInitialization(); + } + + @Test + public void testLDTDeserLive() throws IOException + { + assertEquals(DeletionTime.LIVE, serDeser(DeletionTime.LIVE)); + } + + @Test + public void testLDTDeserLongMAX_VALUE() throws IOException + { + DeletionTime dt = DeletionTime.build(Long.MAX_VALUE, 2147483600); + assertEquals(dt, serDeser(dt)); + } + + @Test + public void testLDTDeser() throws IOException + { + // Test Serialization in all bit possible positions + for (int i = 0; i < 63; i++) + { + DeletionTime dt = DeletionTime.build(1L << i, 2147483600); + assertEquals(dt, serDeser(dt)); + } + } + + private DeletionTime serDeser(DeletionTime dt) throws IOException + { + DeletionTime readDt = null; + int offset = 2; + + try(DataOutputBuffer out = new DataOutputBuffer(12)) // Long + Int = 8 + 4 + { + DeletionTime.getSerializer(BigFormat.getInstance().getLatestVersion()).serialize(dt, out); + + try(DataInputBuffer in = new DataInputBuffer(out.toByteArray())) + { + // Test *both* deserializers + + readDt = DeletionTime.getSerializer(BigFormat.getInstance().getLatestVersion()).deserialize(in); + + ByteBuffer bbOrig = out.buffer(); + bbOrig.rewind(); + ByteBuffer bb = ByteBuffer.allocate(bbOrig.capacity() + offset); + bb.position(offset); + bb.put(bbOrig); + DeletionTime readDt2 = DeletionTime.getSerializer(BigFormat.getInstance().getLatestVersion()).deserialize(bb, offset); + assertEquals(readDt, readDt2); + } + } + + return readDt; + } +}