rocksdb/include/rocksdb/utilities
Manuel Ung 2005c88a75 Implement non-exclusive locks
Summary:
This is an implementation of non-exclusive locks for pessimistic transactions. It is relatively simple and does not prevent starvation (ie. it's possible that request for exclusive access will never be granted if there are always threads holding shared access). It is done by changing `KeyLockInfo` to hold an set a transaction ids, instead of just one, and adding a flag specifying whether this lock is currently held with exclusive access or not.

Some implementation notes:
- Some lock diagnostic functions had to be updated to return a set of transaction ids for a given lock, eg. `GetWaitingTxn` and `GetLockStatusData`.
- Deadlock detection is a bit more complicated since a transaction can now wait on multiple other transactions. A BFS is done in this case, and deadlock detection depth is now just a limit on the number of transactions we visit.
- Expirable transactions do not work efficiently with shared locks at the moment, but that's okay for now.
Closes https://github.com/facebook/rocksdb/pull/1573

Differential Revision: D4239097

Pulled By: lth

fbshipit-source-id: da7c074
2016-12-05 17:39:17 -08:00
..
lua Fix heap use after free ASAN/Valgrind 2016-11-17 12:24:12 -08:00
backupable_db.h Adding support for sharing throttler between multiple backup and restores 2016-06-03 17:02:07 -07:00
checkpoint.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
convenience.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
date_tiered_db.h Add time series database (resubmitted) 2016-08-05 15:56:22 -07:00
db_ttl.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
document_db.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
env_librados.h Add EnvLibrados - RocksDB Env of RADOS (#1222) 2016-07-21 11:16:34 -07:00
env_mirror.h env_mirror: fix a few leaks (#1363) 2016-10-06 10:43:05 -07:00
env_registry.h Env registry for URI-based Env selection [pluggable Env part 1] 2016-06-03 08:15:16 -07:00
geo_db.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
info_log_finder.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
json_document.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
ldb_cmd_execute_result.h [ldb] Export ldb_cmd*.h 2016-05-06 16:09:09 -07:00
ldb_cmd.h LDBCommand::SelectCommand to use a struct as the parameter 2016-05-31 10:26:53 -07:00
leveldb_options.h Move away from enum char value -1 2016-06-14 17:07:34 -07:00
memory_util.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
optimistic_transaction_db.h optimistic transactions support for reinitialization 2016-03-07 19:03:09 -08:00
option_change_migration.h A utility function to help users migrate DB after options change 2016-08-05 15:39:55 -07:00
options_util.h Improve the documentation of LoadLatestOptions 2016-02-16 14:55:24 -08:00
sim_cache.h add stats to Cache::LookUp() 2016-09-01 13:50:39 -07:00
spatial_db.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
stackable_db.h Exporting compaction stats in the form of a map 2016-11-11 20:54:14 -08:00
table_properties_collectors.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
transaction_db_mutex.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
transaction_db.h Implement non-exclusive locks 2016-12-05 17:39:17 -08:00
transaction.h Implement non-exclusive locks 2016-12-05 17:39:17 -08:00
utility_db.h Ensure Windows build w/o port/port.h in public headers 2015-07-16 12:10:16 -07:00
write_batch_with_index.h Add SeekForPrev() to Iterator 2016-09-27 18:20:57 -07:00