rocksdb/utilities/transactions/lock/range/range_tree/lib
Sergei Petrunia c9042db619 Range Locking: add support for escalation barriers (#9290)
Summary:
Range Locking supports Lock Escalation. Lock Escalation is invoked when
lock memory is nearly exhausted and it reduced the amount of memory used
by joining adjacent locks.

Bridging the gap between certain locks has adverse effects. For example,
in MyRocks it is not a good idea to bridge the gap between locks in
different indexes, as that get the lock to cover large portions of
indexes, or even entire indexes.

Resolve this by introducing Escalation Barrier. The escalation process
will call the user-provided barrier callback function:
   bool(const Endpoint& a, const Endpoint& b)

If the function returns true, there's a barrier between a and b and Lock
Escalation will not try to bridge the gap between a and b.

Pull Request resolved: https://github.com/facebook/rocksdb/pull/9290

Reviewed By: akankshamahajan15

Differential Revision: D33486753

Pulled By: riversand963

fbshipit-source-id: f97910b67aba0579ea1d35f523ca6863d3dd018e
2022-01-14 12:46:09 -08:00
..
ft Apply the changes from: PS-5501 : Re-license PerconaFT 'locktree' to Apache V2 (#7801) 2020-12-22 14:47:41 -08:00
locktree Range Locking: add support for escalation barriers (#9290) 2022-01-14 12:46:09 -08:00
portability Add support for building on s390x platform (#8962) 2021-10-22 10:13:15 -07:00
util Apply the changes from: PS-5501 : Re-license PerconaFT 'locktree' to Apache V2 (#7801) 2020-12-22 14:47:41 -08:00
COPYING.AGPLv3 LockTree library, originally from PerconaFT (#7753) 2020-12-09 12:10:57 -08:00
COPYING.APACHEv2 LockTree library, originally from PerconaFT (#7753) 2020-12-09 12:10:57 -08:00
COPYING.GPLv2 LockTree library, originally from PerconaFT (#7753) 2020-12-09 12:10:57 -08:00
db.h LockTree library, originally from PerconaFT (#7753) 2020-12-09 12:10:57 -08:00
README LockTree library, originally from PerconaFT (#7753) 2020-12-09 12:10:57 -08:00
standalone_port.cc LockTree library, originally from PerconaFT (#7753) 2020-12-09 12:10:57 -08:00

The files in this directory originally come from
https://github.com/percona/PerconaFT/.

This directory only includes the "locktree" part of PerconaFT, and its
dependencies.

The following modifications were made:
- Make locktree usable outside of PerconaFT library
- Add shared read-only lock support

The files named *_subst.* are substitutes of the PerconaFT's files, they
contain replacements of PerconaFT's functionality.