From cfee3e93bec7e527391da93f5b810b0ef4fb0fc8 Mon Sep 17 00:00:00 2001 From: Marcus Eriksson Date: Wed, 5 Apr 2017 09:20:03 +0200 Subject: [PATCH] Checksum sstable metadata Patch by marcuse; reviewed by Jason Brown for CASSANDRA-13321 --- CHANGES.txt | 1 + .../cassandra/io/sstable/format/Version.java | 2 + .../io/sstable/format/big/BigFormat.java | 9 ++- .../sstable/metadata/MetadataSerializer.java | 66 ++++++++++++++++-- .../na-1-big-CompressionInfo.db | Bin 87 -> 87 bytes .../legacy_na_clust/na-1-big-Data.db | Bin 5359 -> 5256 bytes .../legacy_na_clust/na-1-big-Digest.crc32 | 2 +- .../legacy_na_clust/na-1-big-Index.db | Bin 157553 -> 157553 bytes .../legacy_na_clust/na-1-big-Statistics.db | Bin 7070 -> 7103 bytes .../legacy_na_clust/na-1-big-TOC.txt | 8 +-- .../na-1-big-CompressionInfo.db | Bin 87 -> 87 bytes .../legacy_na_clust_compact/na-1-big-Data.db | Bin 5426 -> 5286 bytes .../na-1-big-Digest.crc32 | 2 +- .../legacy_na_clust_compact/na-1-big-Index.db | Bin 157553 -> 157553 bytes .../na-1-big-Statistics.db | Bin 7070 -> 7103 bytes .../legacy_na_clust_compact/na-1-big-TOC.txt | 8 +-- .../na-1-big-CompressionInfo.db | Bin 79 -> 79 bytes .../legacy_na_clust_counter/na-1-big-Data.db | Bin 6015 -> 5797 bytes .../na-1-big-Digest.crc32 | 2 +- .../legacy_na_clust_counter/na-1-big-Index.db | Bin 157553 -> 157553 bytes .../na-1-big-Statistics.db | Bin 7079 -> 7112 bytes .../legacy_na_clust_counter/na-1-big-TOC.txt | 8 +-- .../na-1-big-CompressionInfo.db | Bin 79 -> 79 bytes .../na-1-big-Data.db | Bin 6014 -> 5817 bytes .../na-1-big-Digest.crc32 | 2 +- .../na-1-big-Index.db | Bin 157553 -> 157553 bytes .../na-1-big-Statistics.db | Bin 7079 -> 7112 bytes .../na-1-big-TOC.txt | 8 +-- .../na-1-big-CompressionInfo.db | Bin 47 -> 47 bytes .../legacy_na_simple/na-1-big-Data.db | Bin 92 -> 88 bytes .../legacy_na_simple/na-1-big-Digest.crc32 | 2 +- .../legacy_na_simple/na-1-big-Statistics.db | Bin 4623 -> 4656 bytes .../legacy_na_simple/na-1-big-TOC.txt | 8 +-- .../na-1-big-CompressionInfo.db | Bin 47 -> 47 bytes .../legacy_na_simple_compact/na-1-big-Data.db | Bin 95 -> 91 bytes .../na-1-big-Digest.crc32 | 2 +- .../na-1-big-Statistics.db | Bin 4664 -> 4697 bytes .../legacy_na_simple_compact/na-1-big-TOC.txt | 8 +-- .../na-1-big-CompressionInfo.db | Bin 47 -> 47 bytes .../legacy_na_simple_counter/na-1-big-Data.db | Bin 145 -> 139 bytes .../na-1-big-Digest.crc32 | 2 +- .../na-1-big-Statistics.db | Bin 4632 -> 4665 bytes .../legacy_na_simple_counter/na-1-big-TOC.txt | 8 +-- .../na-1-big-CompressionInfo.db | Bin 47 -> 47 bytes .../na-1-big-Data.db | Bin 146 -> 142 bytes .../na-1-big-Digest.crc32 | 2 +- .../na-1-big-Statistics.db | Bin 4673 -> 4706 bytes .../na-1-big-TOC.txt | 8 +-- .../io/sstable/LegacySSTableTest.java | 23 ++++++ 49 files changed, 134 insertions(+), 47 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index e006db3581..90c6b9cb77 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 4.0 + * Checksum sstable metadata (CASSANDRA-13321) * Expose recent histograms in JmxHistograms (CASSANDRA-13642) * Fix buffer length comparison when decompressing in netty-based streaming (CASSANDRA-13899) * Properly close StreamCompressionInputStream to release any ByteBuf (CASSANDRA-13906) diff --git a/src/java/org/apache/cassandra/io/sstable/format/Version.java b/src/java/org/apache/cassandra/io/sstable/format/Version.java index a7d1abffbb..e8721a6e1c 100644 --- a/src/java/org/apache/cassandra/io/sstable/format/Version.java +++ b/src/java/org/apache/cassandra/io/sstable/format/Version.java @@ -55,6 +55,8 @@ public abstract class Version public abstract boolean hasPendingRepair(); + public abstract boolean hasMetadataChecksum(); + public String getVersion() { return version; diff --git a/src/java/org/apache/cassandra/io/sstable/format/big/BigFormat.java b/src/java/org/apache/cassandra/io/sstable/format/big/BigFormat.java index a58b201e23..5f6dd536e4 100644 --- a/src/java/org/apache/cassandra/io/sstable/format/big/BigFormat.java +++ b/src/java/org/apache/cassandra/io/sstable/format/big/BigFormat.java @@ -120,7 +120,7 @@ public class BigFormat implements SSTableFormat // mb (3.0.7, 3.7): commit log lower bound included // mc (3.0.8, 3.9): commit log intervals included - // na (4.0.0): uncompressed chunks, pending repair session + // na (4.0.0): uncompressed chunks, pending repair session, checksummed sstable metadata file // // NOTE: when adding a new version, please add that to LegacySSTableTest, too. @@ -130,6 +130,7 @@ public class BigFormat implements SSTableFormat private final boolean hasCommitLogIntervals; public final boolean hasMaxCompressedLength; private final boolean hasPendingRepair; + private final boolean hasMetadataChecksum; BigVersion(String version) { @@ -142,6 +143,7 @@ public class BigFormat implements SSTableFormat hasCommitLogIntervals = version.compareTo("mc") >= 0; hasMaxCompressedLength = version.compareTo("na") >= 0; hasPendingRepair = version.compareTo("na") >= 0; + hasMetadataChecksum = version.compareTo("na") >= 0; } @Override @@ -174,6 +176,11 @@ public class BigFormat implements SSTableFormat } @Override + public boolean hasMetadataChecksum() + { + return hasMetadataChecksum; + } + public boolean isCompatible() { return version.compareTo(earliest_supported_version) >= 0 && version.charAt(0) <= current_version.charAt(0); diff --git a/src/java/org/apache/cassandra/io/sstable/metadata/MetadataSerializer.java b/src/java/org/apache/cassandra/io/sstable/metadata/MetadataSerializer.java index 2c1e0ec373..f17157cb13 100644 --- a/src/java/org/apache/cassandra/io/sstable/metadata/MetadataSerializer.java +++ b/src/java/org/apache/cassandra/io/sstable/metadata/MetadataSerializer.java @@ -21,12 +21,18 @@ import java.io.*; import java.util.*; import com.google.common.collect.Lists; +import com.google.common.hash.HashFunction; +import com.google.common.hash.Hasher; +import com.google.common.hash.Hashing; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.cassandra.io.sstable.Component; +import org.apache.cassandra.io.sstable.CorruptSSTableException; import org.apache.cassandra.io.sstable.Descriptor; import org.apache.cassandra.io.sstable.format.Version; +import org.apache.cassandra.io.util.DataInputBuffer; +import org.apache.cassandra.io.util.DataOutputBuffer; import org.apache.cassandra.io.util.DataOutputPlus; import org.apache.cassandra.io.util.DataOutputStreamPlus; import org.apache.cassandra.io.util.FileDataInput; @@ -39,7 +45,7 @@ import org.apache.cassandra.utils.FBUtilities; * Metadata serializer for SSTables {@code version >= 'k'}. * *
- * File format := | number of components (4 bytes) | toc | component1 | component2 | ... |
+ * File format := | number of components (4 bytes) | toc | component1 | c1 hash | component2 | c2 hash | ... |
  * toc         := | component type (4 bytes) | position of component |
  * 
* @@ -48,9 +54,11 @@ import org.apache.cassandra.utils.FBUtilities; public class MetadataSerializer implements IMetadataSerializer { private static final Logger logger = LoggerFactory.getLogger(MetadataSerializer.class); + private static final HashFunction hashFunction = Hashing.md5(); public void serialize(Map components, DataOutputPlus out, Version version) throws IOException { + boolean checksum = version.hasMetadataChecksum(); // sort components by type List sortedComponents = Lists.newArrayList(components.values()); Collections.sort(sortedComponents); @@ -59,6 +67,7 @@ public class MetadataSerializer implements IMetadataSerializer out.writeInt(components.size()); // build and write toc int lastPosition = 4 + (8 * sortedComponents.size()); + Map sizes = new EnumMap<>(MetadataType.class); for (MetadataComponent component : sortedComponents) { MetadataType type = component.getType(); @@ -66,12 +75,22 @@ public class MetadataSerializer implements IMetadataSerializer out.writeInt(type.ordinal()); // serialize position out.writeInt(lastPosition); - lastPosition += type.serializer.serializedSize(version, component); + int size = type.serializer.serializedSize(version, component); + lastPosition += size + (checksum ? 8 : 0); // checksum is long + sizes.put(type, size); } // serialize components for (MetadataComponent component : sortedComponents) { - component.getType().serializer.serialize(version, component, out); + byte[] bytes; + try (DataOutputBuffer dob = new DataOutputBuffer(sizes.get(component.getType()))) + { + component.getType().serializer.serialize(version, component, dob); + bytes = dob.getData(); + } + out.write(bytes); + if (checksum) + out.writeLong(hashFunction.hashBytes(bytes).asLong()); } } @@ -103,24 +122,59 @@ public class MetadataSerializer implements IMetadataSerializer public Map deserialize(Descriptor descriptor, FileDataInput in, EnumSet types) throws IOException { + int totalSize = (int) in.bytesRemaining(); Map components = new EnumMap<>(MetadataType.class); // read number of components int numComponents = in.readInt(); // read toc Map toc = new EnumMap<>(MetadataType.class); MetadataType[] values = MetadataType.values(); + Map lengths = new EnumMap<>(MetadataType.class); + int start = 0; + MetadataType lastType = null; for (int i = 0; i < numComponents; i++) { - toc.put(values[in.readInt()], in.readInt()); + int metadataTypeId = in.readInt(); + int position = in.readInt(); + + toc.put(values[metadataTypeId], position); + if (lastType != null) + lengths.put(lastType, position - start); + start = position; + lastType = values[metadataTypeId]; } + lengths.put(lastType, totalSize - start); for (MetadataType type : types) { Integer offset = toc.get(type); if (offset != null) { in.seek(offset); - MetadataComponent component = type.serializer.deserialize(descriptor.version, in); - components.put(type, component); + + if (descriptor.version.hasMetadataChecksum()) + { + int size = lengths.get(type) - 8; // 8 bytes checksum + byte[] bytes = new byte[size]; + in.readFully(bytes); + MetadataComponent component; + try (DataInputBuffer dib = new DataInputBuffer(bytes)) + { + component = type.serializer.deserialize(descriptor.version, dib); + } + long writtenChecksum = in.readLong(); + if (writtenChecksum != hashFunction.hashBytes(bytes).asLong()) + { + String filename = descriptor.filenameFor(Component.STATS); + throw new CorruptSSTableException(new IOException("Checksums do not match for " + filename), filename); + } + components.put(type, component); + } + else + { + MetadataComponent component = type.serializer.deserialize(descriptor.version, in); + components.put(type, component); + } + } } return components; diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_clust/na-1-big-CompressionInfo.db b/test/data/legacy-sstables/na/legacy_tables/legacy_na_clust/na-1-big-CompressionInfo.db index 6bf298681866e38c9424ca7069520630c6a20628..c7fc204d4a7e361fc9f0cad51b96dd183916b258 100644 GIT binary patch literal 87 zcmZSJ^@%cZ&d)6&=(Aq literal 87 zcmZSJ^@%cZ&d)6**{$mhY G_z(baj0?~J diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_clust/na-1-big-Data.db b/test/data/legacy-sstables/na/legacy_tables/legacy_na_clust/na-1-big-Data.db index f92f905b40d41bc3a9b33cae6f426b0ff4be2763..36f9800814667a3ed72be85384800d96de52d840 100644 GIT binary patch literal 5256 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 diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_clust/na-1-big-Digest.crc32 b/test/data/legacy-sstables/na/legacy_tables/legacy_na_clust/na-1-big-Digest.crc32 index 37f68ab9cb..9adb8f59fd 100644 --- a/test/data/legacy-sstables/na/legacy_tables/legacy_na_clust/na-1-big-Digest.crc32 +++ b/test/data/legacy-sstables/na/legacy_tables/legacy_na_clust/na-1-big-Digest.crc32 @@ -1 +1 @@ -1337396261 \ No newline at end of file +829376603 \ No newline at end of file diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_clust/na-1-big-Index.db b/test/data/legacy-sstables/na/legacy_tables/legacy_na_clust/na-1-big-Index.db index b173ddad92cd33d861a8f50eff39b4ba6873a0fb..d3b366dd185c304fd418972b44abac5fbe6c2734 100644 GIT binary patch delta 148 zcmex(j`QO=&J8zJ8JRbKT#(Pn$i6voRS}5VYf;F_!hY}?^Y#P_MxX@i_6v@TKp|G3 z&}O|0KoRE6^KJr_GH(`q3>0TRc#U&&eqjzL)9-(i?^f9|)^1OD!&t|;dBgvyg)Byg Yc$wh*8HJ4Pa1Kz?{EK@1*L4V`xiLvq=kG3U6 z9yoA1cw^0K0n@m12Mb>^h%WrZz#0|4#HVEgm=3ymqW=H?{~!!B1q|%_A2+be<(&X= zHpd7~;)H5tu-yg}0b0xmF$&CwvO&g{{P3J6wb-}$j}_0iB9;x4rKDRpoP$0tvUM#K F0szS?K>+{& delta 171 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 QY-_5)?|tIO!Pdq92RN9=p8x;= literal 5426 zcmd6r{Zmxe8OQGhH{fb>NeYILX)o#;0gY#Y1(q4%ETSX6g3ZLyWJXa$UgTwkT}3ju ztEmPPF~&3#+B6fD5_e)V5v-|699`Z~S4ta{D}I@7p^01N?2D z=RD`!=iGh1pL3qeaXfd77NsbfoNUQSMB!JdMx zg_XN1%JOnci^|HjIGx+eDvEYEcWo~&&VlqAV^a*6RGq8(z+$eca>8aPBMq@-MwaOl zA5C+)Uq4{uKAubke`7551(#MINadPN*bL5DaYF_{-q&01Y6xxmJl}0}i1CRm^gUQ2 zz-Ay{XWI;pS(ZO>N-%FT(B>I-@QMlkp>xJDG*Ju1`RlwGndBc?V8%$Rf8B8GgdXu)T zs?cRZ+bTEcc0t?TJ>zHgW#ButD2cX7QS6OgGRcY7N}&#Qn6%GIEzz4PDX*22MrAf> z&!4J-VJ^&2ta~_VANsl9Z~A|{CiUMS9pU&2mARzjWq7neBjmhV z9#)l$4XMnm&!n7p_yIanR7cbF6atRL==eH|iFf3wm|_kT{VA&0r)MMgzT|>}r(Bcy z%wr+thIIa<@FRah_#0xz8bA$XbucxQp5!?`)&(wP5|?QZ&EE!MfRGU=tp|AvT*uq) zwT9Bo3cR4*A{vt6he7d?g z?>5rQ&T(|dPx9&#ph)pAQfN7CjI|7Esi06>Ib=t|Bf;N;*2F|zD8l2)JP*bu`Nxus zK75>27mSZ{xhziMR}?anQ2tjMGu%c1f}(ctOicO#q2o@q9tfvM*K?G>?qnR0uC;EX zR&iZB-`oWCs7Rc4d9t}MRnxRVOxRG(?%t{>uJR1To+MTF=uaQ%+QE9mY8{iz}T z7`PGP5;Y9a8|#8~Y9%)uC=nF{H!kMuM(K_F;gGvhiu7iezwWZ)b)h7%+n9|XO3=_7N z!mi=9**1dzx_n3IZ&t9dK8qdq|D~B73+b*YV=sx zC6jJ=Y`M##H*?&gDm*gwNBvTCtn)ksD;ObT<8V+a60Upe5VT<9kx$>-hg|~~!?v55 z#(f3CfhaF)Z|Yo!;NChOxr|3&lg|e;)4;bSq)EV*p_%m%bpdGx@%?5HUVMu$3>{yj zZv;oH>LA~pX@SGK&FA3L40N_BI}KiDyBZ>Gt#i3xXe8D zrI5_*PJ0^Ct)2B0b^PUIF{c{dlN{qAvwwc0TxZTn=*rQX8)kUG3}j739iJXS=e+4n zXMKh5As#a4i{-#SWj#7)XdIJLM(57#UaO6gx#@i;5i08Nb|Wp1XjmGN#rpe!yNON) z38h6yO!76x2N)&NxRDu;Nu!XsfZf__gpTPvN|bUVE6vD>q&kilLfKb}8bpFKiqS&} z|MN5+y@zX&9uuKhTSo+H2qIrr$mp=Rz{k)rGfXs})mDSY2;BJG-pNd*(eQN+Sg=rv z^S&R1e;PWCBGzu#2=J&6-K-)_MmX`IB4g9!Rs-t$`6qi!DDt>(3|hYXjpTV-V3<>k ze?i_JEE1SzAg^aYb&8gHEgSTnJPs8qCOi_`@5Z`)n!+}uI{u(Y<_9l>GceTWfZ``} ztFc68sSa`FGZd;KHeB_Pou2*JU0l&Bd43JYDmjCFZ}3pl3+LIU&r98yQmv65D&cI&4`&$VHu@k(&? zS}RL4h;akbv`4Zul>ic*dl(ki%)_eza`7#U6&@1Zt6Q8ze^ZN+SJsXRvoC{gLN#sq z_@-6!6|c@DF$WI<0M)@yIx$U)VlVjh1|1hX#MHkJnlX8lELgH?Daur}i(iJTiDp(a za~h+9hb%bz8-#=!JX$_r=S#!4T+Hf(q7>x-Wx(tjv&2x^Uq`JoTQr&2opBt<5_9d#iO^%175-A`?SJ&1#%(E RX4sL1-yZqt|GxF^{{gtXHEaL? diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_clust_compact/na-1-big-Digest.crc32 b/test/data/legacy-sstables/na/legacy_tables/legacy_na_clust_compact/na-1-big-Digest.crc32 index ce2e2f8f3b..a9900dada9 100644 --- a/test/data/legacy-sstables/na/legacy_tables/legacy_na_clust_compact/na-1-big-Digest.crc32 +++ b/test/data/legacy-sstables/na/legacy_tables/legacy_na_clust_compact/na-1-big-Digest.crc32 @@ -1 +1 @@ -2454456604 \ No newline at end of file +818525950 \ No newline at end of file diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_clust_compact/na-1-big-Index.db b/test/data/legacy-sstables/na/legacy_tables/legacy_na_clust_compact/na-1-big-Index.db index 3f4635093d4695cb88326065d24e47dedcbd2a5c..e04d3dbda92e5d6d9dc23d7960537d0d735abd91 100644 GIT binary patch delta 179 zcmex(j`QO=&JE3+jQrald}YkzWMMyejd3$?UmhnT+vb|-g`6yG2d^=2{)>nF$q%Zm7|XXOykV^4+`Qrc)It`cLp*=r{27Iejc^W7(&UH~8=OD65CDlQ BN%;T( delta 364 zcmex(j`QO=&JE3+jNIEFd}YkzWaQkg$jMj;q7QN~f#}We78G$Za%@gq1*Y~|00lX= z$67D~x$N67ID!qoe7wCOc0C@A3RR910 diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_clust_compact/na-1-big-Statistics.db b/test/data/legacy-sstables/na/legacy_tables/legacy_na_clust_compact/na-1-big-Statistics.db index b15e758f152cd62e6737697671072943e21a49fd..f2da58dcf5cf61f567ba10bfcab5f863604fa664 100644 GIT binary patch delta 195 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 literal 6015 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 diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_clust_counter/na-1-big-Statistics.db b/test/data/legacy-sstables/na/legacy_tables/legacy_na_clust_counter/na-1-big-Statistics.db index 3df7cf35958f0e7bca90beb61769818f39735272..569221411f953c7ee0b95cb532932474ca4a7269 100644 GIT binary patch delta 195 zcmZ2(e!^UZfq{Vqh(Q3vW(49?AZ7yM9w26BV35|CsA9>{EK@1*L4V`xiLvq=kG3U6 z9yoA1cw^0K0n@m12Mb>^h%WrZz#0|4#HV8hm=3ymvi|@7{~!!B1q|#by}f#|+20?; z*&HJ{i4&@o!6O+c0<@SBVicGUWrK`e{Wg*3v+Cvpf2?@E6>-d%EG6B`v9WOfv~N3S G`T+nL&O`P9 delta 171 zcmX?MzT8}mfq{Vqh(SOFh#7%67KoXExCV%s85pF68T2P7NQ+IhQJk16zp-bvfNA6k z`~8LtqRXWiSlukGWFjwsY0sPo_5c6>2VtO2FtDGzIOW>Ui+_Nel+8JUlQ{JtS{dA2 hfkHsb7?Jo;Hqh8Vs_%LnZ(d+vm>e&yIXO-`2>?e52eb3CC`N{LN{J}HN=Y8Mbb*hI)j~b};E`oDtqz|h) z)qKcUmwLd45FzF(IiwQfaTx#Lde|Zi-CgQ{$8^JECvm>Ol1NO}G9#l)&5P3hF0~MM zLJ5Sei)(qnOtzTnF7@#E$x586OD(03AxlCTq7wX3WXaT!B{?54=38TOddYHMN|#z& z7e_m;8njMBArG~{V4P{hV9|}TrIzsG24KUiU|`#ikrYrrr;FR%A!n!8OxcOHdEBvF z7uT|6TNfoLy$>@u<($^4>Vu@^#WZiG3v{o4^d}Y*&20m1mTCPW?097w(fN%EwMx%K z5qh|aLB)DPkCZZKEmq9ymsT$pqCLY|g;M)MJ~8X@j8=_z2CJ~~QY0^CJ$Wfoi1B(! zWd|%lykS*Xt46SC4YbQzt~pM4!KLOCGOzHoOT~9vLF5!!^5`W7QqBjLQbrJOu5VPNhbCEtMgA zR##~B+gDczvA%8Xwb8cT($Tgig!{H7y;6p!CuUyniS)aEupN&rBCE!(2}s=G$A=0r zaYRG=w`x@qgPn7M_3ske9OBvW>q*j)Frv-*mHzmnJS}{GktImk@v$EA`iLFw%aep! zSaixxsFg)$b_3~-tf>%e%XOa395V@(t~`y7bL9!PWnOr`LwNHHAb$pMi5I%mLfvV= z+fM^N>W9`-fWfB#7b{SDyRSgU54-b3-W(ODiW+g5CTm(TUdy$dFX+Ltj;k%&Q8KOL z-fm8|4=JL>Ud;^EMx?v1X2|-~R97&LgKX_FC;B9dv|`hx;qs}znELyQmGxC40!uuK z71bW#cE70IiT^5DEbPOmio$QUbgBo?VVzDE?NIXKS~bab{Zu-D*#QkO#xTJ+8&ar< zP;oFyONeFS$TYT(OhG6yA+BGP(M6`As5K$JU(`KqWEyUQDWPAK$wsCTI+)D;qGC~O ze8^~QU}Ct|CA!@&X`dX3UC=tr>tTx+(~XJ?Hb~K?exZ|>!)zGWj!|vBvL0EITP{8z zEBV(DV93!vSxKzYbhDg@3Dr0wt+EnXlI^KfqheGUn9pyvhEN=yp@Qc05=zX+EOCh= zmHew_g-TgetKyUt#yihWXsVGx3#eAb`-2&@Xd9u~$fYvPvH~Du268CGcvmC*Varn9 zn4P_4sZWWpze`b04K(#^sZ*oGu0YNM#q9jbBqdgQ3d!b2EQAhOWF5kOpXF%QfmgPLC+&=y!ccPgI+2k^y~=+RUm7;{!h zo&uyR0rJWa_VkM$&+N8+ael8ikibB5_J;D!A%3_sm`2+?1xn+~P|cJb8vP4I%4F@a zNcLTXUS^$k6M2Op(tC|%A-uklMYbvo9`fd_&;W)C`zUlLOAZjJow7sg(H*S*s%lqI zpfT&)E(k}VEFATV@E*T$4zGFL_nn{~H6m(PbrAjWW~N|Us`%P9)zlLF#HWRFb_sd1phS$H}*sK+0;c5_iF68lJvrlde;a2OsaA=0ySq;t( zx+Y7PqFm;|T#-k(?3Y!)FI?H*6#9iL<{($B-75EJ!{}iDdJf4B@67PXR&1`^<_y!0 zRTq=>S_iD+e^7x!T)#lKT#4sUi9$RRg~CpD45*>7A9&aj`h^8~6YX&nIs=>S+ z5ya%PUeej@4^v2I71wED^4=oLm?3BI2-i!+$wG`ziX3S@G;>To}(vFoWjF$~g_0Q34+-Ca)PT1}#Y?l-|goIyfQR@3@j9fz6rE2!Zr;H-hyKvuI5_p+^XLDbD@XRz(?ExHT+bveiYY<4r=_u4v}dU_|};#%3X^%X_Wr8rnq~d+HD2Dk;xvzhIsR?` zeF@9?DA+Gy@f+#*Pt#@&aL=am|7AHIPxzrekAx+ZtK74-50eB;BkL)-CjZff$};y0 z?2>EqNF!=<{80Gcr^VLiO8+%sJmXQ+C!~fQtyLqPm+SO6>J(bDfmsL6-kVpDLc^v4 zkJd1O9`N3FsOofl(mj?fh z%qsmA7k1vTh3@M<^?~OQNGmU1EoVm?HiX#CHDF%(k({~(({a@dSTLQLWt6K`6F5G1 zP+5pqSukE$8^sPbF&)#`MnXY4WeTfg+zu2nv{M~0yT~`7Rk~+AXv8pTUMD`|$EM}L zMtwV_*e89lbHNOu$gp3B9Ch?{LCkq^R;b_6oCqCC$Q@Jd)JRQA_~bDN7snyviYBIL z2#H9z)~7_y`+A8@$Y5P}KNM+%T zxv48g zMz?b&M)fO_bD5rcqwIx(lL0_~?pC;_cKG@1}dz6n{CR`dPcy!Bo`v2S+ zb3bA3jOJA;_e8Wc7`TAWvCD)f7k(JmBitCZ*@N5?>5tpJMEVXj4bd-^6{wa}ra)UX zz&%j~1?om9Z|EqL6=)?hBF^8F-Es6@vXNRiCr#dnKl^A*oRZ#JI0pe)}eiXhU*1@-loVZt!k&&*}`6YP4XOV z_zic_kB#!=h&Gx>jfde=rR3Jpjl_672LF1(tH45ThqmB);SayN6gWal;?la1 z;p0hN#E^Dn2&*)a#6=ug&7k-&LP8mf!hwttMc9s_D@i0G217n=(c2zL&h5udkj@Rq zO@6;Ay*M+5$dp?|Y3fOuLqa+g(YW7EC?*)lCrYhpyNSgknTp$k+Xy8gZwi`QOz2+Z zOhGw|f%Maa8vi=xrFE(AQXC$Nf`e`bt4GeaNK=iuFECd%NQrY-XC5Ds`|>iKin*FV1^S#2lAYS+SSx|p>YW@v{*`cuj literal 6014 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 delta 362 zcmex(j`QO=&JE3+jK8-(_{x~a$vAPlA}3=ZC!^%{gB(midg11G3yL@yH8v-%0#X|` z@3jC5T5ONCU<7jaZ@=IOQtZCHz>x{aKeu__O&}GvS@1DX^xpQ3j~EL$S&|RFshs?v z%8F5Kd%_z=!D==JMx%o-{NWtqLw71boZS|TZ#N&X$m3+OIe6ps_5=&Yd`^~Q2X8#z z&S=2|6b%B3Zq~a16ubiz+`RB6kd*;q{Y?kTemQvK^XB}*TuzoMh<)ZPCWkL<1sPn= z$@muHJ(d|D^}KyR^(r7%{d6E}!@(ObH-B6JG|d_$=Bp269S5<%ZV3j;Lfvu?C{EK@1*L4V`xiLvq=kG3U6 z9yoA1cw^0K0n@m12Mb>^h%WrZz#0|4Bp9}#0k~Pko+Ae0<@SBVicGUWrK{p2VtO2FtDGzXxZ(>Nn3%Ol+8JUlQ{JtS{YLB h0EK{-F(UDyY@o4!RNwXF>w7RTOpce0|cxCQjAbG0{}{x18@KU diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple/na-1-big-Data.db b/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple/na-1-big-Data.db index 089aa6c38621b396f32bb058613f7f2f739b3277..cd52dab59a345e6363914f1b50572e00e988a441 100644 GIT binary patch delta 52 zcma!vU|c(qQCsH_^8#fCX(MF@o5LFefGlGm>&UqZAj?FVLG9=XWrhHSq{J%5BIEtm E0Duk-)&Kwi delta 56 zcma!uVO%$nQQP3eJ`ZIEX(MF@n@f8h09nRB)*Z7I$_$bw$_%MO{0~$mBvcpz6p|9F K7^VN1aRC6&{EK@1*L4V`xiLvq=kG3U6 z9yoA1cw-GSBO~kPFI+}!n>VqSavH{+J6QOVL3H6K2G*$XB|drwz;xhui~9fn|AR2l zL@=4JF%rz@Q)SG Wx59M?CT|gp<~X`+(f+Bvtl0n&<41k~ delta 195 zcmdm>(yyY%z`(!)#2}yo#Ed{33&c!7Tm!_+3=D#68T2P#5EPqeqc|~Deq#?aqaaL& zGEfBwFm7JJIGx`#a)teVLk7|1QVgtamR8aqBEYmGM?wAn|NlW4qMCuh{(-*8Os0=s uKz_>PLP6=t4T7wbdjxrOASN&vhJXwOA|yVP4K)3a>boAtf{4jy1)~8+^DV9b diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple/na-1-big-TOC.txt b/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple/na-1-big-TOC.txt index ae620de6f0..0251bd9110 100644 --- a/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple/na-1-big-TOC.txt +++ b/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple/na-1-big-TOC.txt @@ -1,8 +1,8 @@ -Summary.db -Filter.db Index.db -CompressionInfo.db Data.db -TOC.txt +CompressionInfo.db Statistics.db +Summary.db +TOC.txt Digest.crc32 +Filter.db diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_compact/na-1-big-CompressionInfo.db b/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_compact/na-1-big-CompressionInfo.db index 63039e6c7a77beef2b276e5563bfa8b24ef26ab5..1c738aa0288a04b77b2805690c4b1cf12edc033c 100644 GIT binary patch delta 29 ZcmdPbpCB$#|NsAg1_;;$q!^)W1^{&{1x)|| delta 29 ZcmdPbpCB&5!0=)>0|aaaQjAbG0{}|d19boZ diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_compact/na-1-big-Data.db b/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_compact/na-1-big-Data.db index 5970d11861ca6850c5eceb16dce862fe61faa3e2..8adbf543b998eccf70ec0cea2ac9e4b3a6a4e882 100644 GIT binary patch delta 53 zcma!#X52K9QCIiCI}a5GStAt&>w_mbfGlGm>(J~UK$eLLgUR7+Miqttg`~tP#`KLh FIsm3y5F!8o delta 57 zcma!!XWTrIQP=Qz?+g_NStAt&>kB6y09nRB)~z`WDhyI4Dhwq;3=9vHk2t6@1SljW LRxv8^Uu*&Z_Y@G= diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_compact/na-1-big-Digest.crc32 b/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_compact/na-1-big-Digest.crc32 index e85ffd9202..138bc9c2d9 100644 --- a/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_compact/na-1-big-Digest.crc32 +++ b/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_compact/na-1-big-Digest.crc32 @@ -1 +1 @@ -576034138 \ No newline at end of file +1825853914 \ No newline at end of file diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_compact/na-1-big-Statistics.db b/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_compact/na-1-big-Statistics.db index f63efeccd03eb23a8b9926b91b13b9d7f9d0c9ac..7e2561351d7623cfde8cf766398349761ee487b2 100644 GIT binary patch delta 210 zcmdm?a#KZ(fq{Vqh(SOFh#7%66^NODxCe-t85jhQG3ZZzC@413MvIl6 zW92y>ZA*$gaNuW(7QSQz=*_$vOy*bybXM$u}Y2cj}_0iir5Vd V43i%SY5{Qs$M&rIraRI~WC1({NLK&= delta 172 zcmcbqvO`6Ufq{Vqh(SOFh#7%67KoXExCV%s85jiDGU!jfASgD`MsZ@Q{KlTu0;Z8G z?Drcoh%T36V0E*!@~oHvrgLp>)c^ngAB2HA!NC53%hG3#Czk^`DU%BYr6)HCvQF+1 i0~j!B11Uxbn}GoUL;nKq diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter/na-1-big-Data.db b/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter/na-1-big-Data.db index 28234abda91ad41f882edde6eb1d69dba00820e2..f3e6359e3b07fc7af63fb28cbc2493dd148406d6 100644 GIT binary patch delta 121 zcmbQp*v-hOHIY#||J7H8#Ve+}zH9#%y0`Xpogf2iRQM8~QUMKyOa?|q21Y|GhI}o4 zhJ$YmZ5Y_i{meXU7-WoW80-(vd5!}04=j3p#T5? delta 127 zcmeBXoXE(iJ&{qmbd9rBDbp&?mD|FdZwGejEn#4Fv$T?tx6ok7WME`uU^KL1$k*a$ zII+*ehJoE&WuJo$gN%_4gZ-sF4?qHXdu{*)jDZ4o%vOK|EX)?zFi4u%Fw|@FGdxh0 Wkg#Q7Kj0|+g8>2<8U5F12Lk|}yC8x9 diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter/na-1-big-Digest.crc32 b/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter/na-1-big-Digest.crc32 index 955bc497c4..2ad4fa0d59 100644 --- a/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter/na-1-big-Digest.crc32 +++ b/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter/na-1-big-Digest.crc32 @@ -1 +1 @@ -381306786 \ No newline at end of file +3361465012 \ No newline at end of file diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter/na-1-big-Statistics.db b/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter/na-1-big-Statistics.db index d65a3a453031759bf3909bb4898996cfe7a7c388..04cacf9835bf63ecb81a5f51f91cbd133e8434cc 100644 GIT binary patch delta 210 zcmbQCvQtHcfq{Vqh(Q3vW(49?AZ7yM9w26BU=TbuQN@y@S*B9rgZ{?X6JzB$9&JmC zJaFK2@WvWrMn=}nD%?zLn>VqSavH{+J6QOVL3H6K2G*$XB|dHjU^?)-W&QvE|3MgN zA{f};`RAc&qZB(iQBZnvfgtDP8bKaYh;9Z;Eua#hI~bApP&UZqmh<^p>WW$+f2?@E V6&^E~yhSjD!*Ir=s2@ps69EzXLoomV delta 195 zcmdm~GDAg;fq{Vqh(SOFh#7%67KoXExCV%s85jiDGU!jfASgD`MsZ@Q{Kg(*MnRYk z8=wjhVBCCxF`eHua)teVLk7|1QVgtamR8dLe}HL634!|m|Nnz9L^T70{XISFcMpP$ vfc%ung@V$P8w6P=_XzUnKuln;Dg+q{L`Zxn8)*6;)ptFP^*<(`6-)sD+{rKu diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter/na-1-big-TOC.txt b/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter/na-1-big-TOC.txt index ae620de6f0..0251bd9110 100644 --- a/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter/na-1-big-TOC.txt +++ b/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter/na-1-big-TOC.txt @@ -1,8 +1,8 @@ -Summary.db -Filter.db Index.db -CompressionInfo.db Data.db -TOC.txt +CompressionInfo.db Statistics.db +Summary.db +TOC.txt Digest.crc32 +Filter.db diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter_compact/na-1-big-CompressionInfo.db b/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter_compact/na-1-big-CompressionInfo.db index edf78d5dcd15186bb807c8c573caa3d4aae18ab3..1237cc7f0057f1dba767e8984dc43eda2d555beb 100644 GIT binary patch delta 29 bcmdPbpCB$#|NsAg1~6dM2U3g>HUk3yZjuDc delta 29 bcmdPbpCB&5!0=)>0~jzG04YWYn}GoUL_h-b diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter_compact/na-1-big-Data.db b/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter_compact/na-1-big-Data.db index ce4965c1a93d102dd9494d2b8caf406d4acc9b71..72772f06d0ad252c2ea9dac245980cfb36388426 100644 GIT binary patch literal 142 zcmdOAWMG)Yz-Una|Ns9621bT2!V4HR7#J8-7#JHEUVT+qykffRyY_#fduvbE2{N!o zg)a$us>Kk+$jHEGXw8tX#lUdjorf(0yHW7@2Wbq9whXdHwhZrJc3`L85(ZW` zODoTo08NH021Z5(Mnh|cd@Tls(&^{1gWOULv=M4ah^d>U^ diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter_compact/na-1-big-Digest.crc32 b/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter_compact/na-1-big-Digest.crc32 index 06f147ffdb..b44a7339ea 100644 --- a/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter_compact/na-1-big-Digest.crc32 +++ b/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter_compact/na-1-big-Digest.crc32 @@ -1 +1 @@ -2161889354 \ No newline at end of file +2410392183 \ No newline at end of file diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter_compact/na-1-big-Statistics.db b/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter_compact/na-1-big-Statistics.db index 6b2d88b91cf16f10c0668a2b6a33f61b14f64e55..c431a5913ac2a63926f8409c3996a7c8c284b6f9 100644 GIT binary patch delta 210 zcmX@8@<>IEfq{Vqh(SOFh#7%66^NODxCe-t85jhQG3ZZzC@413MvIl6 zW92y>ZA*$gaNuW(7QSQ(VU4*+x1M{588 delta 172 zcmaE)a!^H$fq{Vqh(SOFh#7%67KoXExCV%s85jiDGU!jfASgD`MsZ@Q{KlTu0;Z8G z?Drcoh%T36V0E*!@@xqJ)44ts_5c6>2VtO2FtES-l(*73E)d8`nOrC+J-I=Ub#jj& hj}F8HhVX8n4A4$SBtDc4H2sh2yPkZOfXQbCdjU=^Ew2Co diff --git a/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter_compact/na-1-big-TOC.txt b/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter_compact/na-1-big-TOC.txt index ae620de6f0..0251bd9110 100644 --- a/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter_compact/na-1-big-TOC.txt +++ b/test/data/legacy-sstables/na/legacy_tables/legacy_na_simple_counter_compact/na-1-big-TOC.txt @@ -1,8 +1,8 @@ -Summary.db -Filter.db Index.db -CompressionInfo.db Data.db -TOC.txt +CompressionInfo.db Statistics.db +Summary.db +TOC.txt Digest.crc32 +Filter.db diff --git a/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java b/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java index 0f11aeeac2..8cbf006556 100644 --- a/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java +++ b/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java @@ -24,6 +24,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Random; +import java.util.UUID; import org.junit.After; import org.junit.Assert; @@ -146,6 +147,28 @@ public class LegacySSTableTest doTestLegacyCqlTables(); } + @Test + public void testMutateMetadata() throws Exception + { + // we need to make sure we write old version metadata in the format for that version + for (String legacyVersion : legacyVersions) + { + logger.info("Loading legacy version: {}", legacyVersion); + truncateLegacyTables(legacyVersion); + loadLegacyTables(legacyVersion); + CacheService.instance.invalidateKeyCache(); + + for (ColumnFamilyStore cfs : Keyspace.open("legacy_tables").getColumnFamilyStores()) + { + for (SSTableReader sstable : cfs.getLiveSSTables()) + { + sstable.descriptor.getMetadataSerializer().mutateRepaired(sstable.descriptor, 1234, UUID.randomUUID()); + sstable.reloadSSTableMetadata(); + } + } + } + } + private void doTestLegacyCqlTables() throws Exception { for (String legacyVersion : legacyVersions)