lbrycrd/src
MarcoFalke 82ffd4d918
Merge #14963: mempool, validation: Explain cs_main locking semantics
fa5e373365 validation: Add cs_main locking annotations (MarcoFalke)
fa5c346c5a doc: Add comment to cs_main and mempool::cs (MarcoFalke)
fafe941bdd test: Add missing validation locks (MarcoFalke)
fac4558462 sync: Add RecursiveMutex type alias (MarcoFalke)

Pull request description:

  Both the chain state and the transaction pool are validation specific, but access to them is protected by two locks. The two locks have the following semantics:

  * Writing to the chain state or adding transactions to the transaction pool -> Take both `cs_main` and `mempool::cs`
  * Reading either or removing transactions from the the transaction pool -> Take only the appropriate lock

Tree-SHA512: 6f6e612ffc391904c6434a79a4f3f8de1b928bf0a3e3434b73561037b395e2b40a70a5a4bd8472dd230e9eacc8e5d5374c904a3c509910cf3971dd7ff59a626c
2019-01-15 13:42:05 -05:00
..
bench Merge #14963: mempool, validation: Explain cs_main locking semantics 2019-01-15 13:42:05 -05:00
compat Merge #13665: [build] Add risc-v support to gitian 2018-08-16 20:33:50 +02:00
config
consensus Update copyright headers to 2018 2018-12-29 10:15:01 +01:00
crypto Extract CSipHasher to it's own file in crypto/ directory. 2018-11-05 09:25:15 -08:00
index Merge #14085: index: Fix for indexers skipping genesis block. 2019-01-09 14:48:11 +01:00
interfaces Merge #14556: qt: fix confirmed transaction labeled "open" (#13299) 2019-01-15 17:39:19 +01:00
leveldb Merge leveldb subtree 2018-08-09 11:31:45 -04:00
obj
obj-test
policy Add locking annotations to feeStats, shortStats and longStats 2018-12-03 00:14:33 +01:00
primitives Use const in COutPoint class 2018-11-30 12:54:24 +02:00
qt Merge #14556: qt: fix confirmed transaction labeled "open" (#13299) 2019-01-15 17:39:19 +01:00
rpc Merge #14982: rpc: Add getrpcinfo command 2019-01-14 18:07:15 +01:00
script Add descriptor expansion cache 2018-11-28 15:24:49 -08:00
secp256k1
support Fix out-of-bounds write in case of failing mmap(...) in PosixLockedPageAllocator::AllocateLocked 2019-01-06 17:45:53 +01:00
test Merge #14963: mempool, validation: Explain cs_main locking semantics 2019-01-15 13:42:05 -05:00
univalue Update univalue subtree 2018-09-07 08:21:14 -04:00
util util: Make ToLower and ToUpper take a char 2019-01-10 02:51:14 +01:00
wallet Merge #14941: rpc: Make unloadwallet wait for complete wallet unload 2019-01-15 14:38:23 +01:00
zmq Use RPCHelpMan for all RPCs 2018-11-14 15:33:15 -05:00
.clang-format Fix inconsistent namespace formatting guidelines 2018-04-13 15:37:20 -04:00
addrdb.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
addrdb.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
addrman.cpp Make addrman use its local RNG exclusively 2018-12-12 14:22:12 -08:00
addrman.h Use C++11 default member initializers 2019-01-05 16:16:37 +01:00
amount.h Update copyright headers to 2018 2018-12-29 10:15:01 +01:00
arith_uint256.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
arith_uint256.h Use std::numeric_limits<UNSIGNED>::max()) instead of (UNSIGNED)-1 2018-12-04 19:55:04 +02:00
attributes.h Add NODISCARD to all {Decode,Parse}[...](...) functions returning bool. Sort includes. 2018-11-05 17:03:11 +01:00
base58.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
base58.h Add NODISCARD to all {Decode,Parse}[...](...) functions returning bool. Sort includes. 2018-11-05 17:03:11 +01:00
bech32.cpp Make objects in range declarations immutable by default. Avoid unnecessary copying of objects in range declarations. 2018-08-27 18:19:33 +02:00
bech32.h Fix missing or inconsistent include guards 2018-03-22 16:23:04 +01:00
bitcoin-cli-res.rc
bitcoin-cli.cpp Merge #14480: refactor: Drop boost::this_thread::interruption_point and boost::thread_interrupted in main thread 2018-12-07 15:40:50 +01:00
bitcoin-tx-res.rc
bitcoin-tx.cpp Merge #14480: refactor: Drop boost::this_thread::interruption_point and boost::thread_interrupted in main thread 2018-12-07 15:40:50 +01:00
bitcoind-res.rc
bitcoind.cpp Merge #14521: qt, docs: Fix bitcoin-qt -version output formatting 2018-11-23 10:17:46 +01:00
blockencodings.cpp Extract CSipHasher to it's own file in crypto/ directory. 2018-11-05 09:25:15 -08:00
blockencodings.h disallow oversized CBlockHeaderAndShortTxIDs 2018-11-13 12:41:41 -08:00
blockfilter.cpp blockfilter: Remove default clause in switch statement. 2018-12-21 23:53:29 -06:00
blockfilter.h blockfilter: Additional constructors for BlockFilter. 2018-11-06 09:12:54 -08:00
bloom.cpp Merge #13429: Return the script type from Solver 2018-08-25 17:41:00 +02:00
bloom.h Removes unsed CBloomFilter constructor. 2018-08-13 01:24:55 +02:00
chain.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
chain.h Don't label transactions "Open" while catching up 2019-01-03 00:10:24 +02:00
chainparams.cpp Merge #13216: [Qt] implements concept for different disk sizes on intro 2019-01-11 14:33:24 -10:00
chainparams.h implements different disk sizes for different networks on intro 2018-10-07 13:11:36 +01:00
chainparamsbase.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
chainparamsbase.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
chainparamsseeds.h net: Update hardcoded seeds 2018-08-13 13:57:15 +02:00
checkpoints.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
checkpoints.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
checkqueue.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
clientversion.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
clientversion.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
coins.cpp Extract CSipHasher to it's own file in crypto/ directory. 2018-11-05 09:25:15 -08:00
coins.h Extract CSipHasher to it's own file in crypto/ directory. 2018-11-05 09:25:15 -08:00
compat.h Implement poll() on systems which support it properly. 2018-12-03 14:25:51 -05:00
compressor.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
compressor.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
core_io.h Add NODISCARD to all {Decode,Parse}[...](...) functions returning bool. Sort includes. 2018-11-05 17:03:11 +01:00
core_memusage.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
core_read.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
core_write.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
cuckoocache.h Make objects in range declarations immutable by default. Avoid unnecessary copying of objects in range declarations. 2018-08-27 18:19:33 +02:00
dbwrapper.cpp Fix typos reported by codespell 2018-09-04 13:11:26 +02:00
dbwrapper.h scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
dummywallet.cpp Remove direct node->wallet calls in init.cpp 2018-11-06 11:44:40 -04:00
fs.cpp utils: Fix broken Windows filelock 2018-10-19 02:29:25 +08:00
fs.h Update copyright headers to 2018 2018-12-29 10:15:01 +01:00
hash.cpp Extract CSipHasher to it's own file in crypto/ directory. 2018-11-05 09:25:15 -08:00
hash.h Merge #13258: uint256: Remove unnecessary crypto/common.h dependency 2018-11-30 18:48:58 +01:00
httprpc.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
httprpc.h Cleanup StartRest() 2018-08-11 09:34:47 +03:00
httpserver.cpp Use C++11 default member initializers 2019-01-05 16:16:37 +01:00
httpserver.h convert C-style (void) parameter lists to C++ style () 2018-09-13 10:36:41 -07:00
indirectmap.h
init.cpp Merge #14941: rpc: Make unloadwallet wait for complete wallet unload 2019-01-15 14:38:23 +01:00
init.h Pass chain and client variables where needed 2018-11-06 11:44:40 -04:00
key.cpp Pass export privkey DER compression flag correctly 2018-09-13 09:58:26 +02:00
key.h convert C-style (void) parameter lists to C++ style () 2018-09-13 10:36:41 -07:00
key_io.cpp Update copyright headers to 2018 2018-12-29 10:15:01 +01:00
key_io.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
keystore.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
keystore.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
limitedmap.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
logging.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
logging.h logging: Replace LogPrint macros with regular functions 2018-09-12 11:28:01 -04:00
Makefile.am Merge #13815: util: Add [[nodiscard]] to all {Decode,Parse}[...](...) functions returning bool 2018-11-15 14:39:37 -05:00
Makefile.bench.include Add Benchmark to test input de-duplication worst case 2018-11-25 10:53:20 +09:00
Makefile.leveldb.include
Makefile.qt.include Add BitcoinApplication & RPCConsole tests 2019-01-04 06:31:07 -05:00
Makefile.qttest.include Add BitcoinApplication & RPCConsole tests 2019-01-04 06:31:07 -05:00
Makefile.test.include Remove duplicate libconsensus linking in test make 2018-11-29 05:30:58 -06:00
memusage.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
merkleblock.cpp Replace use of BEGIN and END macros on uint256 2019-01-10 01:58:33 +01:00
merkleblock.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
miner.cpp [mining] segwit option must be set in GBT 2018-12-10 16:42:14 -05:00
miner.h [mining] segwit option must be set in GBT 2018-12-10 16:42:14 -05:00
net.cpp Merge #15144: [refactor] CNode: Use C++11 default member initializers 2019-01-14 14:48:51 +01:00
net.h Merge #15144: [refactor] CNode: Use C++11 default member initializers 2019-01-14 14:48:51 +01:00
net_processing.cpp Use a FastRandomContext in LimitOrphanTxSize 2018-12-12 14:22:12 -08:00
net_processing.h Merge #14331: doxygen: Fix member comments 2018-09-30 22:15:37 -03:00
netaddress.cpp Merge #14728: fix uninitialized read when stringifying an addrLocal 2018-11-23 09:53:20 +01:00
netaddress.h Merge #14728: fix uninitialized read when stringifying an addrLocal 2018-11-23 09:53:20 +01:00
netbase.cpp Implement poll() on systems which support it properly. 2018-12-03 14:25:51 -05:00
netbase.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
netmessagemaker.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
noui.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
noui.h Update copyright headers to 2018 2018-12-29 10:15:01 +01:00
outputtype.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
outputtype.h Add NODISCARD to all {Decode,Parse}[...](...) functions returning bool. Sort includes. 2018-11-05 17:03:11 +01:00
pow.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
pow.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
prevector.h Implement prevector::fill once 2018-11-14 12:19:28 -05:00
protocol.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
protocol.h Use C++11 default member initializers 2019-01-05 16:16:37 +01:00
pubkey.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
pubkey.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
random.cpp Do not permit copying FastRandomContexts 2018-12-12 14:28:16 -08:00
random.h Do not permit copying FastRandomContexts 2018-12-12 14:28:16 -08:00
rest.cpp Merge #12151: rpc: Remove cs_main lock from blockToJSON and blockheaderToJSON 2019-01-04 12:31:07 +01:00
reverse_iterator.h scripted-diff: Remove trailing whitespaces 2018-07-24 20:46:23 +01:00
reverselock.h
scheduler.cpp scripted-diff: Replace boost::bind with std::bind 2018-10-20 02:29:59 +08:00
scheduler.h scripted-diff: Replace boost::bind with std::bind 2018-10-20 02:29:59 +08:00
serialize.h Drop minor GetSerializeSize template 2018-09-11 00:58:13 -04:00
shutdown.cpp Break circular dependency: init -> * -> init by extracting shutdown.h 2018-06-25 00:08:49 -04:00
shutdown.h Break circular dependency: init -> * -> init by extracting shutdown.h 2018-06-25 00:08:49 -04:00
span.h Add more methods to Span class 2018-07-27 11:52:18 -07:00
streams.h Merge #14357: streams: Fix broken streams_vector_reader test. Remove unused seek(size_t). 2019-01-05 15:06:43 +01:00
sync.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
sync.h sync: Add RecursiveMutex type alias 2018-12-14 16:26:13 -05:00
threadinterrupt.cpp Merge #11640: Make LOCK, LOCK2, TRY_LOCK work with CWaitableCriticalSection 2018-08-31 16:00:38 +02:00
threadinterrupt.h Update copyright headers to 2018 2018-12-29 10:15:01 +01:00
threadsafety.h Pass chain locked variables where needed 2018-11-06 11:44:40 -04:00
timedata.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
timedata.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
tinyformat.h Fix typos 2018-03-21 08:34:44 +02:00
torcontrol.cpp Drop IsLimited in favor of IsReachable 2019-01-13 22:50:36 -08:00
torcontrol.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
txdb.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
txdb.h Merge #13780: 0.17: Pre-branch maintenance 2018-08-08 13:55:27 +02:00
txmempool.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
txmempool.h validation: Add cs_main locking annotations 2018-12-22 15:23:03 +01:00
ui_interface.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
ui_interface.h Make macro compatible with MSVC 2018-08-14 09:19:47 +00:00
uint256.cpp util: Make ToLower and ToUpper take a char 2019-01-10 02:51:14 +01:00
uint256.h uint256: Remove unnecessary crypto/common.h use 2018-09-18 14:27:05 +09:00
undo.h Extract CSipHasher to it's own file in crypto/ directory. 2018-11-05 09:25:15 -08:00
validation.cpp Merge #14963: mempool, validation: Explain cs_main locking semantics 2019-01-15 13:42:05 -05:00
validation.h Merge #13258: uint256: Remove unnecessary crypto/common.h dependency 2018-11-30 18:48:58 +01:00
validationinterface.cpp Merge #13743: refactor: Replace boost::bind with std::bind 2018-12-29 14:14:26 +01:00
validationinterface.h Add compile time checking for all cs_main runtime locking assertions 2018-08-26 00:25:28 +02:00
version.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
versionbits.cpp MOVEONLY: Move versionbits info out of versionbits.o 2018-09-23 22:55:11 +02:00
versionbits.h MOVEONLY: Move versionbits info out of versionbits.o 2018-09-23 22:55:11 +02:00
versionbitsinfo.cpp MOVEONLY: Move versionbits info out of versionbits.o 2018-09-23 22:55:11 +02:00
versionbitsinfo.h MOVEONLY: Move versionbits info out of versionbits.o 2018-09-23 22:55:11 +02:00
walletinitinterface.h Remove direct node->wallet calls in init.cpp 2018-11-06 11:44:40 -04:00
warnings.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
warnings.h Merge #13780: 0.17: Pre-branch maintenance 2018-08-08 13:55:27 +02:00