rocksdb/utilities/transactions
Manuel Ung f622ca2c7c WriteUnPrepared: savepoint support (#5627)
Summary:
Add savepoint support when the current transaction has flushed unprepared batches.

Rolling back to savepoint is similar to rolling back a transaction. It requires the set of keys that have changed since the savepoint, re-reading the keys at the snapshot at that savepoint, and the restoring the old keys by writing out another unprepared batch.

For this strategy to work though, we must be capable of reading keys at a savepoint. This does not work if keys were written out using the same sequence number before and after a savepoint. Therefore, when we flush out unprepared batches, we must split the batch by savepoint if any savepoints exist.

eg. If we have the following:
```
Put(A)
Put(B)
Put(C)
SetSavePoint()
Put(D)
Put(E)
SetSavePoint()
Put(F)
```

Then we will write out 3 separate unprepared batches:
```
Put(A) 1
Put(B) 1
Put(C) 1
Put(D) 2
Put(E) 2
Put(F) 3
```

This is so that when we rollback to eg. the first savepoint, we can just read keys at snapshot_seq = 1.
Pull Request resolved: https://github.com/facebook/rocksdb/pull/5627

Differential Revision: D16584130

Pulled By: lth

fbshipit-source-id: 6d100dd548fb20c4b76661bd0f8a2647e64477fa
2019-07-31 13:39:39 -07:00
..
optimistic_transaction_db_impl.cc Organizing rocksdb/db directory 2019-05-31 11:57:01 -07:00
optimistic_transaction_db_impl.h Make Optimistic Tx database stackable 2018-04-03 15:28:40 -07:00
optimistic_transaction_test.cc TransactionUtil::CheckKey() to skip unnecessary history (#4941) 2019-06-11 11:46:42 -07:00
optimistic_transaction.cc Organizing rocksdb/db directory 2019-05-31 11:57:01 -07:00
optimistic_transaction.h Extend Transaction::GetForUpdate with do_validate (#4680) 2018-12-06 17:49:00 -08:00
pessimistic_transaction_db.cc simplify include directive involving inttypes (#5402) 2019-06-06 13:56:07 -07:00
pessimistic_transaction_db.h WritePrepared: skip_concurrency_control option (#5330) 2019-05-28 16:29:45 -07:00
pessimistic_transaction.cc WritePrepared: reduce prepared_mutex_ overhead (#5420) 2019-06-10 11:53:31 -07:00
pessimistic_transaction.h WritePrepared: snapshot should be larger than max_evicted_seq_ (#4886) 2019-01-15 18:11:52 -08:00
snapshot_checker.cc WriteUnPrepared: less virtual in iterator callback (#5049) 2019-04-02 14:47:16 -07:00
transaction_base.cc WriteUnPrepared: savepoint support (#5627) 2019-07-31 13:39:39 -07:00
transaction_base.h WriteUnPrepared: savepoint support (#5627) 2019-07-31 13:39:39 -07:00
transaction_db_mutex_impl.cc Apply modernize-use-override (2nd iteration) 2019-02-14 14:41:36 -08:00
transaction_db_mutex_impl.h Change RocksDB License 2017-07-15 16:11:23 -07:00
transaction_lock_mgr.cc simplify include directive involving inttypes (#5402) 2019-06-06 13:56:07 -07:00
transaction_lock_mgr.h Improve transaction lock details (#5193) 2019-04-15 10:44:03 -07:00
transaction_test.cc WriteUnPrepared: Add new variable write_batch_flush_threshold (#5633) 2019-07-26 12:56:26 -07:00
transaction_test.h simplify include directive involving inttypes (#5402) 2019-06-06 13:56:07 -07:00
transaction_util.cc TransactionUtil::CheckKey() to skip unnecessary history (#4941) 2019-06-11 11:46:42 -07:00
transaction_util.h Fix PopSavePoint to merge info into the previous savepoint (#5628) 2019-07-26 11:39:30 -07:00
write_prepared_transaction_test.cc Fix appveyor compliant about passing const to thread (#5447) 2019-06-12 15:06:22 -07:00
write_prepared_txn_db.cc WritePrepared: switch PreparedHeap from priority_queue to deque (#5436) 2019-06-11 19:55:14 -07:00
write_prepared_txn_db.h WritePrepared: switch PreparedHeap from priority_queue to deque (#5436) 2019-06-11 19:55:14 -07:00
write_prepared_txn.cc WriteUnPrepared: Use WriteUnpreparedTxnReadCallback for MultiGet (#5634) 2019-07-29 17:56:13 -07:00
write_prepared_txn.h WriteUnPrepared: Use WriteUnpreparedTxnReadCallback for MultiGet (#5634) 2019-07-29 17:56:13 -07:00
write_unprepared_transaction_test.cc WriteUnPrepared: Add new variable write_batch_flush_threshold (#5633) 2019-07-26 12:56:26 -07:00
write_unprepared_txn_db.cc WriteUnPrepared: savepoint support (#5627) 2019-07-31 13:39:39 -07:00
write_unprepared_txn_db.h WriteUnPrepared: use tracked_keys_ to track keys needed for rollback (#5562) 2019-07-16 15:24:56 -07:00
write_unprepared_txn.cc WriteUnPrepared: savepoint support (#5627) 2019-07-31 13:39:39 -07:00
write_unprepared_txn.h WriteUnPrepared: savepoint support (#5627) 2019-07-31 13:39:39 -07:00