diff options
author | Antoine Riard <ariard@student.42.fr> | 2019-12-18 17:46:53 -0500 |
---|---|---|
committer | Antoine Riard <ariard@student.42.fr> | 2020-04-30 14:41:24 -0400 |
commit | 6a72f26968cf931c985d8d4797b6264274cabd06 (patch) | |
tree | 43314c9f174a36168f9c8f6f9662fcb66bb5c892 /src/interfaces/chain.cpp | |
parent | 841178820d31e1c24a00cb2c8fc0b1fd2f126f56 (diff) |
[wallet] Remove locked_chain from CWallet, its RPCs and tests
This change is intended to make the bitcoin node and its rpc, network
and gui interfaces more responsive while the wallet is in use. Currently
because the node's cs_main mutex is always locked before the wallet's
cs_wallet mutex (to prevent deadlocks), cs_main currently stays locked
while the wallet does relatively slow things like creating and listing
transactions.
This commit only remmove chain lock tacking in wallet code, and invert
lock order from cs_main, cs_wallet to cs_wallet, cs_main.
must happen at once to avoid any deadlock. Previous commit were only
removing Chain::Lock methods to Chain interface and enforcing they
take cs_main.
Remove LockChain method from CWallet and Chain::Lock interface.
Diffstat (limited to 'src/interfaces/chain.cpp')
-rw-r--r-- | src/interfaces/chain.cpp | 12 |
1 files changed, 0 insertions, 12 deletions
diff --git a/src/interfaces/chain.cpp b/src/interfaces/chain.cpp index 11cd20d785..c5262e4bc0 100644 --- a/src/interfaces/chain.cpp +++ b/src/interfaces/chain.cpp @@ -53,11 +53,6 @@ bool FillBlock(const CBlockIndex* index, const FoundBlock& block, UniqueLock<Rec return true; } -class LockImpl : public Chain::Lock, public UniqueLock<RecursiveMutex> -{ - using UniqueLock::UniqueLock; -}; - class NotificationsProxy : public CValidationInterface { public: @@ -150,13 +145,6 @@ class ChainImpl : public Chain { public: explicit ChainImpl(NodeContext& node) : m_node(node) {} - std::unique_ptr<Chain::Lock> lock(bool try_lock) override - { - auto lock = MakeUnique<LockImpl>(::cs_main, "cs_main", __FILE__, __LINE__, try_lock); - if (try_lock && lock && !*lock) return {}; - std::unique_ptr<Chain::Lock> result = std::move(lock); // Temporary to avoid CWG 1579 - return result; - } Optional<int> getHeight() override { LOCK(::cs_main); |