rocksdb/utilities
Maysam Yabandeh 4e3c3d8c6a WritePrepared Txn: duplicate keys
Summary:
With WriteCommitted, when the write batch has duplicate keys, the txn db simply inserts them to the db with different seq numbers and let the db ignore/merge the duplicate values at the read time. With WritePrepared all the entries of the batch are inserted with the same seq number which prevents us from benefiting from this simple solution.

This patch applies a hackish solution to unblock the end-to-end testing. The hack is to be replaced with a proper solution soon. The patch simply detects the duplicate key insertions, and mark the previous one as obsolete. Then before writing to the db it rewrites the batch eliminating the obsolete keys. This would incur a memcpy cost. Furthermore handing duplicate merge would require to do FullMerge instead of simply ignoring the previous value, which is not handled by this patch.
Closes https://github.com/facebook/rocksdb/pull/2969

Differential Revision: D5976337

Pulled By: maysamyabandeh

fbshipit-source-id: 114e65b66f137d8454ff2d1d782b8c05da95f989
2017-10-05 07:41:02 -07:00
..
backupable support opening zero backups during engine init 2017-09-12 13:26:34 -07:00
blob_db Make it explicit blob db doesn't support CF 2017-09-08 11:11:04 -07:00
cassandra Limit number of merge operands in Cassandra merge operator 2017-10-02 16:11:40 -07:00
checkpoint Revert "comment out unused parameters" 2017-07-21 18:26:26 -07:00
compaction_filters Revert "comment out unused parameters" 2017-07-21 18:26:26 -07:00
convenience Change RocksDB License 2017-07-15 16:11:23 -07:00
date_tiered Make InternalKeyComparator final and directly use it in merging iterator 2017-09-11 12:04:21 -07:00
document Revert "comment out unused parameters" 2017-07-21 18:26:26 -07:00
geodb Change RocksDB License 2017-07-15 16:11:23 -07:00
leveldb_options Change RocksDB License 2017-07-15 16:11:23 -07:00
lua CodeMod: Prefer ADD_FAILURE() over EXPECT_TRUE(false), et cetera 2017-07-16 21:26:02 -07:00
memory Change RocksDB License 2017-07-15 16:11:23 -07:00
merge_operators allow nullptr Slice only as sentinel 2017-08-23 10:56:06 -07:00
option_change_migration Change RocksDB License 2017-07-15 16:11:23 -07:00
options Replace dynamic_cast<> 2017-07-28 16:27:16 -07:00
persistent_cache block_cache_tier: fix gcc-7 warnings 2017-08-10 11:58:53 -07:00
redis Revert "comment out unused parameters" 2017-07-21 18:26:26 -07:00
simulator_cache CacheActivityLogger, component to log cache activity into a file 2017-07-28 12:36:48 -07:00
spatialdb Revert "comment out unused parameters" 2017-07-21 18:26:26 -07:00
table_properties_collectors fix deletion-triggered compaction in table builder 2017-09-28 18:17:30 -07:00
transactions WritePrepared Txn: duplicate keys 2017-10-05 07:41:02 -07:00
ttl Revert "comment out unused parameters" 2017-07-21 18:26:26 -07:00
write_batch_with_index WritePrepared Txn: duplicate keys 2017-10-05 07:41:02 -07:00
col_buf_decoder.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
col_buf_decoder.h Revert "comment out unused parameters" 2017-07-21 18:26:26 -07:00
col_buf_encoder.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
col_buf_encoder.h Change RocksDB License 2017-07-15 16:11:23 -07:00
column_aware_encoding_exp.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
column_aware_encoding_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
column_aware_encoding_util.cc Replace dynamic_cast<> 2017-07-28 16:27:16 -07:00
column_aware_encoding_util.h Change RocksDB License 2017-07-15 16:11:23 -07:00
debug.cc Fix naming in InternalKey 2017-09-12 17:17:42 -07:00
env_librados_test.cc Change RocksDB License 2017-07-15 16:11:23 -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-15 16:11:23 -07:00
env_mirror.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
env_timed_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
env_timed.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
merge_operators.h garbage collect tombstones in merge operator 2017-08-31 10:11:54 -07:00
object_registry_test.cc Revert "comment out unused parameters" 2017-07-21 18:26:26 -07:00
util_merge_operators_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00