e4234fbdcf
Summary: In our testing cluster, we found large amount tombstone has been promoted to kValue type from kMerge after reaching the top level of compaction. Since we used to only collecting tombstone in merge operator, those tombstones can never be collected. This PR addresses the issue by adding a GC step in compaction filter, which is only for kValue type records. Since those record already reached the top of compaction (no earlier data exists) we can safely remove them in compaction filter without worrying old data appears. This PR also removes an old optimization in cassandra merge operator for single merge operands. We need to do GC even on a single operand, so the optimation does not make sense anymore. Closes https://github.com/facebook/rocksdb/pull/2855 Reviewed By: sagar0 Differential Revision: D5806445 Pulled By: wpc fbshipit-source-id: 6eb25629d4ce917eb5e8b489f64a6aa78c7d270b |
||
---|---|---|
.. | ||
backupablejni.cc | ||
backupenginejni.cc | ||
cassandra_compactionfilterjni.cc | ||
cassandra_value_operator.cc | ||
checkpoint.cc | ||
clock_cache.cc | ||
columnfamilyhandle.cc | ||
compaction_filter.cc | ||
compaction_options_fifo.cc | ||
compaction_options_universal.cc | ||
comparator.cc | ||
comparatorjnicallback.cc | ||
comparatorjnicallback.h | ||
compression_options.cc | ||
env_options.cc | ||
env.cc | ||
filter.cc | ||
ingest_external_file_options.cc | ||
iterator.cc | ||
loggerjnicallback.cc | ||
loggerjnicallback.h | ||
lru_cache.cc | ||
memtablejni.cc | ||
merge_operator.cc | ||
options.cc | ||
portal.h | ||
ratelimiterjni.cc | ||
remove_emptyvalue_compactionfilterjni.cc | ||
restorejni.cc | ||
rocksdb_exception_test.cc | ||
rocksjni.cc | ||
slice.cc | ||
snapshot.cc | ||
sst_file_writerjni.cc | ||
statistics.cc | ||
statisticsjni.cc | ||
statisticsjni.h | ||
table.cc | ||
transaction_log.cc | ||
ttl.cc | ||
write_batch_test.cc | ||
write_batch_with_index.cc | ||
write_batch.cc | ||
writebatchhandlerjnicallback.cc | ||
writebatchhandlerjnicallback.h |