rocksdb/utilities
Manuel Ung a16e00b7b9 WriteUnPrepared Txn: Disable seek to snapshot optimization (#3955)
Summary:
This is implemented by extending ReadCallback with another function `MaxUnpreparedSequenceNumber` which returns the largest visible sequence number for the current transaction, if there is uncommitted data written to DB. Otherwise, it returns zero, indicating no uncommitted data.

There are the places where reads had to be modified.
- Get and Seek/Next was just updated to seek to max(snapshot_seq, MaxUnpreparedSequenceNumber()) instead, and iterate until a key was visible.
- Prev did not need need updates since it did not use the Seek to sequence number optimization. Assuming that locks were held when writing unprepared keys, and ValidateSnapshot runs, there should only be committed keys and unprepared keys of the current transaction, all of which are visible. Prev will simply iterate to get the last visible key.
- Reseeking to skip keys optimization was also disabled for write unprepared, since it's possible to hit the max_skip condition even while reseeking. There needs to be some way to resolve infinite looping in this case.
Closes https://github.com/facebook/rocksdb/pull/3955

Differential Revision: D8286688

Pulled By: lth

fbshipit-source-id: 25e42f47fdeb5f7accea0f4fd350ef35198caafe
2018-06-27 12:23:07 -07:00
..
backupable Add file name info to SequentialFileReader. (#4026) 2018-06-21 08:42:24 -07:00
blob_db BlobDB: is_fifo=true also evict non-TTL blob files (#4049) 2018-06-25 22:43:05 -07:00
cassandra comment unused parameters to turn on -Wunused-parameter flag 2018-04-12 17:59:16 -07:00
checkpoint Cleanup staging directory at start of checkpoint (#4035) 2018-06-21 16:27:12 -07:00
compaction_filters Comment out unused variables 2018-03-05 13:13:41 -08:00
convenience Change RocksDB License 2017-07-15 16:11:23 -07:00
date_tiered Move prefix_extractor to MutableCFOptions 2018-05-21 14:43:11 -07:00
document fix memory leak in two_level_iterator 2018-04-15 17:26:26 -07:00
geodb Fix geo_db may seek an error key when they have the same quadkey 2018-05-14 23:57:15 -07:00
leveldb_options Change RocksDB License 2017-07-15 16:11:23 -07:00
lua fix memory leak in two_level_iterator 2018-04-15 17:26:26 -07:00
memory fix memory leak in two_level_iterator 2018-04-15 17:26:26 -07:00
merge_operators comment unused parameters to turn on -Wunused-parameter flag 2018-04-12 17:59:16 -07:00
option_change_migration comment unused parameters to turn on -Wunused-parameter flag 2018-04-12 17:59:16 -07:00
options fix memory leak in two_level_iterator 2018-04-15 17:26:26 -07:00
persistent_cache Remove tests from ROCKSDB_VALGRIND_RUN 2018-05-30 16:15:16 -07:00
redis fix memory leak in two_level_iterator 2018-04-15 17:26:26 -07:00
simulator_cache comment unused parameters to turn on -Wunused-parameter flag 2018-04-12 17:59:16 -07:00
spatialdb fix memory leak in two_level_iterator 2018-04-15 17:26:26 -07:00
table_properties_collectors fix memory leak in two_level_iterator 2018-04-15 17:26:26 -07:00
transactions WriteUnPrepared Txn: Disable seek to snapshot optimization (#3955) 2018-06-27 12:23:07 -07:00
ttl fix memory leak in two_level_iterator 2018-04-15 17:26:26 -07:00
write_batch_with_index Change and clarify the relationship between Valid(), status() and Seek*() for all iterators. Also fix some bugs 2018-05-17 02:56:56 -07:00
col_buf_decoder.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
col_buf_decoder.h Comment out unused variables 2018-03-05 13:13:41 -08:00
col_buf_encoder.cc fix shift UBSAN error in col_buf_encoder.cc 2018-02-20 16:44:00 -08:00
col_buf_encoder.h Change RocksDB License 2017-07-15 16:11:23 -07:00
column_aware_encoding_exp.cc fix memory leak in two_level_iterator 2018-04-15 17:26:26 -07:00
column_aware_encoding_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
column_aware_encoding_util.cc run make format for PR 3838 (#3954) 2018-06-05 12:58:02 -07:00
column_aware_encoding_util.h Move prefix_extractor to MutableCFOptions 2018-05-21 14:43:11 -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 Suppress lint in old files 2018-01-29 12:56:42 -08: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 fix memory leak in two_level_iterator 2018-04-15 17:26:26 -07:00
env_timed.cc comment unused parameters to turn on -Wunused-parameter flag 2018-04-12 17:59:16 -07:00
merge_operators.h Support StringAppendOperator(delimiter_char) constructor in java-api 2018-03-08 16:17:47 -08:00
object_registry_test.cc fix memory leak in two_level_iterator 2018-04-15 17:26:26 -07:00
util_merge_operators_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00