Sylvain, I've seen to the code. Yes, you right about local deletion time. But it contradicts to the tests results.
Do you have any thoughts how to explain result of the second test after patch applying? Our patch: diff --git a/src/java/org/apache/cassandra/db/DeletedColumn.java b/src/java/org/apache/cassandra/db/DeletedColumn.java index 18faeef..31744f6 100644 --- a/src/java/org/apache/cassandra/db/DeletedColumn.java +++ b/src/java/org/apache/cassandra/db/DeletedColumn.java @@ -17,10 +17,13 @@ */ package org.apache.cassandra.db; +import java.io.IOException; import java.nio.ByteBuffer; +import java.security.MessageDigest; import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.db.marshal.MarshalException; +import org.apache.cassandra.io.util.DataOutputBuffer; import org.apache.cassandra.utils.Allocator; import org.apache.cassandra.utils.ByteBufferUtil; import org.apache.cassandra.utils.HeapAllocator; @@ -46,6 +49,25 @@ public class DeletedColumn extends Column } @Override + public void updateDigest(MessageDigest digest) { + digest.update(name.duplicate()); + // it's commented to prevent consideration of the localDeletionTime in Merkle Tree construction + //digest.update(value.duplicate()); + + DataOutputBuffer buffer = new DataOutputBuffer(); + try + { + buffer.writeLong(timestamp); + buffer.writeByte(serializationFlags()); + } + catch (IOException e) + { + throw new RuntimeException(e); + } + digest.update(buffer.getData(), 0, buffer.getLength()); + } + + @Override public long getMarkedForDeleteAt() { return timestamp; -- Best regards** Zotov Alexey Grid Dynamics Skype: azotcsit