Thank you for the review.
For now, I leave the max timestamp calculation part as it is done during streaming.
we need to use Integer.MIN_VALUE as the value for expireBefore when deserializing the columns, otherwise the expired columns will be converted to DeletedColumns, which will change there serialized size (and thus screw up the data size and column index)
for markDeltaAsDeleted, we must check if the length is already negative and leave it so if it is, otherwise if a streamed sstable get re-streamed to another node before it was compacted, we could end up not cleaning the delta correctly.
it would be nice in SSTW.appendFromStream() to assert the sanity of our little deserialize-reserialize dance and assert what we did write the number of bytes that we wrote in the header.
Nice point. I added the same assertion as other append() does.
the patch change a clearAllDelta to a markDeltaAsDeleted in CounterColumnTest which is bogus (and the test does fail with that change).
I forgot to revert this one. I should have run test before submitting...
I would markDeltaAsDeleted to markForClearingDelta as this describe what the function does better
nitpick: there is a few space at end of lines in some comments (I know I know, I'm picky).
Fixed this one too, I guess.