rocksdb/utilities
yiwu-arbug 672efad99a Fix blob DB transaction usage while GC
Summary:
While GC, blob DB use optimistic transaction to delete or replace the index entry in LSM, to guarantee correctness if there's a normal write writing to the same key. However, the previous implementation doesn't call SetSnapshot() nor use GetForUpdate() of transaction API, instead it do its own sequence number checking before beginning the transaction. A normal write can sneak in after the sequence number check and overwrite the key, and the GC will delete or relocate the old version of the key by mistake. Update the code to property use GetForUpdate() to check the existing index entry.

After the patch the sequence number store with each blob record is useless, So I'm considering remove the sequence number from blob record, in another patch.
Closes https://github.com/facebook/rocksdb/pull/2703

Differential Revision: D5589178

Pulled By: yiwu-arbug

fbshipit-source-id: 8dc960cd5f4e61b36024ba7c32d05584ce149c24
2017-08-31 14:20:55 -07:00
..
backupable Change RocksDB License 2017-07-26 11:31:01 -07:00
blob_db Fix blob DB transaction usage while GC 2017-08-31 14:20:55 -07:00
checkpoint Change RocksDB License 2017-07-26 11:31:01 -07:00
compaction_filters Change RocksDB License 2017-07-26 11:31:01 -07:00
convenience Change RocksDB License 2017-07-26 11:31:01 -07:00
date_tiered Change RocksDB License 2017-07-26 11:31:01 -07:00
document Change RocksDB License 2017-07-26 11:31:01 -07:00
geodb Change RocksDB License 2017-07-26 11:31:01 -07:00
leveldb_options Change RocksDB License 2017-07-26 11:31:01 -07:00
lua Change RocksDB License 2017-07-26 11:31:01 -07:00
memory Change RocksDB License 2017-07-26 11:31:01 -07:00
merge_operators Change RocksDB License 2017-07-26 11:31:01 -07:00
option_change_migration Change RocksDB License 2017-07-26 11:31:01 -07:00
options Change RocksDB License 2017-07-26 11:31:01 -07:00
persistent_cache Change RocksDB License 2017-07-26 11:31:01 -07:00
redis Change RocksDB License 2017-07-26 11:31:01 -07:00
simulator_cache Change RocksDB License 2017-07-26 11:31:01 -07:00
spatialdb Change RocksDB License 2017-07-26 11:31:01 -07:00
table_properties_collectors Change RocksDB License 2017-07-26 11:31:01 -07:00
transactions Change RocksDB License 2017-07-26 11:31:01 -07:00
ttl Fix GetCurrentTime() initialization for valgrind 2017-07-05 12:12:00 -07:00
write_batch_with_index Change RocksDB License 2017-07-26 11:31:01 -07:00
col_buf_decoder.cc Change RocksDB License 2017-07-26 11:31:01 -07:00
col_buf_decoder.h Change RocksDB License 2017-07-26 11:31:01 -07:00
col_buf_encoder.cc Change RocksDB License 2017-07-26 11:31:01 -07:00
col_buf_encoder.h Change RocksDB License 2017-07-26 11:31:01 -07:00
column_aware_encoding_exp.cc Change RocksDB License 2017-07-26 11:31:01 -07:00
column_aware_encoding_test.cc Change RocksDB License 2017-07-26 11:31:01 -07:00
column_aware_encoding_util.cc Change RocksDB License 2017-07-26 11:31:01 -07:00
column_aware_encoding_util.h Change RocksDB License 2017-07-26 11:31:01 -07:00
debug.cc Change RocksDB License 2017-07-26 11:31:01 -07:00
env_librados_test.cc Change RocksDB License 2017-07-26 11:31:01 -07:00
env_librados.cc Remove double buffering on RandomRead on Windows. 2017-04-27 12:30:05 -07:00
env_librados.md Add EnvLibrados - RocksDB Env of RADOS (#1222) 2016-07-21 11:16:34 -07:00
env_mirror_test.cc Change RocksDB License 2017-07-26 11:31:01 -07:00
env_mirror.cc Change RocksDB License 2017-07-26 11:31:01 -07:00
env_timed_test.cc Change RocksDB License 2017-07-26 11:31:01 -07:00
env_timed.cc Change RocksDB License 2017-07-26 11:31:01 -07:00
merge_operators.h Change RocksDB License 2017-07-26 11:31:01 -07:00
object_registry_test.cc Change RocksDB License 2017-07-26 11:31:01 -07:00
util_merge_operators_test.cc Change RocksDB License 2017-07-26 11:31:01 -07:00