mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-03-15 12:19:46 +01:00
Put lock logging behind DEBUG_LOCKCONTENTION preprocessor directive
Github-Pull: #24770
Rebased-From: 39a34b6877
This commit is contained in:
parent
1ea76767d0
commit
6374e24887
6 changed files with 18 additions and 6 deletions
|
@ -160,7 +160,9 @@ const CLogCategoryDesc LogCategories[] =
|
||||||
{BCLog::VALIDATION, "validation"},
|
{BCLog::VALIDATION, "validation"},
|
||||||
{BCLog::I2P, "i2p"},
|
{BCLog::I2P, "i2p"},
|
||||||
{BCLog::IPC, "ipc"},
|
{BCLog::IPC, "ipc"},
|
||||||
|
#ifdef DEBUG_LOCKCONTENTION
|
||||||
{BCLog::LOCK, "lock"},
|
{BCLog::LOCK, "lock"},
|
||||||
|
#endif
|
||||||
{BCLog::UTIL, "util"},
|
{BCLog::UTIL, "util"},
|
||||||
{BCLog::BLOCKSTORE, "blockstorage"},
|
{BCLog::BLOCKSTORE, "blockstorage"},
|
||||||
{BCLog::ALL, "1"},
|
{BCLog::ALL, "1"},
|
||||||
|
|
|
@ -60,7 +60,9 @@ namespace BCLog {
|
||||||
VALIDATION = (1 << 21),
|
VALIDATION = (1 << 21),
|
||||||
I2P = (1 << 22),
|
I2P = (1 << 22),
|
||||||
IPC = (1 << 23),
|
IPC = (1 << 23),
|
||||||
|
#ifdef DEBUG_LOCKCONTENTION
|
||||||
LOCK = (1 << 24),
|
LOCK = (1 << 24),
|
||||||
|
#endif
|
||||||
UTIL = (1 << 25),
|
UTIL = (1 << 25),
|
||||||
BLOCKSTORE = (1 << 26),
|
BLOCKSTORE = (1 << 26),
|
||||||
ALL = ~(uint32_t)0,
|
ALL = ~(uint32_t)0,
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
#include <crypto/siphash.h>
|
#include <crypto/siphash.h>
|
||||||
#include <hash.h>
|
#include <hash.h>
|
||||||
#include <i2p.h>
|
#include <i2p.h>
|
||||||
|
#include <logging.h>
|
||||||
#include <net_permissions.h>
|
#include <net_permissions.h>
|
||||||
#include <netaddress.h>
|
#include <netaddress.h>
|
||||||
#include <netbase.h>
|
#include <netbase.h>
|
||||||
|
@ -32,6 +33,7 @@
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <deque>
|
#include <deque>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
#include <list>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <optional>
|
#include <optional>
|
||||||
|
|
|
@ -6,8 +6,11 @@
|
||||||
#ifndef BITCOIN_SYNC_H
|
#ifndef BITCOIN_SYNC_H
|
||||||
#define BITCOIN_SYNC_H
|
#define BITCOIN_SYNC_H
|
||||||
|
|
||||||
|
#ifdef DEBUG_LOCKCONTENTION
|
||||||
#include <logging.h>
|
#include <logging.h>
|
||||||
#include <logging/timer.h>
|
#include <logging/timer.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <threadsafety.h>
|
#include <threadsafety.h>
|
||||||
#include <util/macros.h>
|
#include <util/macros.h>
|
||||||
|
|
||||||
|
@ -136,8 +139,10 @@ private:
|
||||||
void Enter(const char* pszName, const char* pszFile, int nLine)
|
void Enter(const char* pszName, const char* pszFile, int nLine)
|
||||||
{
|
{
|
||||||
EnterCritical(pszName, pszFile, nLine, Base::mutex());
|
EnterCritical(pszName, pszFile, nLine, Base::mutex());
|
||||||
|
#ifdef DEBUG_LOCKCONTENTION
|
||||||
if (Base::try_lock()) return;
|
if (Base::try_lock()) return;
|
||||||
LOG_TIME_MICROS_WITH_CATEGORY(strprintf("lock contention %s, %s:%d", pszName, pszFile, nLine), BCLog::LOCK);
|
LOG_TIME_MICROS_WITH_CATEGORY(strprintf("lock contention %s, %s:%d", pszName, pszFile, nLine), BCLog::LOCK);
|
||||||
|
#endif
|
||||||
Base::lock();
|
Base::lock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,13 +19,17 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Identical to TestingSetup but excludes lock contention logging, as some of
|
* Identical to TestingSetup but excludes lock contention logging if
|
||||||
* these tests are designed to be heavily contested to trigger race conditions
|
* `DEBUG_LOCKCONTENTION` is defined, as some of these tests are designed to be
|
||||||
* or other issues.
|
* heavily contested to trigger race conditions or other issues.
|
||||||
*/
|
*/
|
||||||
struct NoLockLoggingTestingSetup : public TestingSetup {
|
struct NoLockLoggingTestingSetup : public TestingSetup {
|
||||||
NoLockLoggingTestingSetup()
|
NoLockLoggingTestingSetup()
|
||||||
|
#ifdef DEBUG_LOCKCONTENTION
|
||||||
: TestingSetup{CBaseChainParams::MAIN, /*extra_args=*/{"-debugexclude=lock"}} {}
|
: TestingSetup{CBaseChainParams::MAIN, /*extra_args=*/{"-debugexclude=lock"}} {}
|
||||||
|
#else
|
||||||
|
: TestingSetup{CBaseChainParams::MAIN} {}
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_FIXTURE_TEST_SUITE(checkqueue_tests, NoLockLoggingTestingSetup)
|
BOOST_FIXTURE_TEST_SUITE(checkqueue_tests, NoLockLoggingTestingSetup)
|
||||||
|
|
|
@ -56,9 +56,6 @@ class RpcMiscTest(BitcoinTestFramework):
|
||||||
|
|
||||||
self.log.info("test logging rpc and help")
|
self.log.info("test logging rpc and help")
|
||||||
|
|
||||||
# Test logging RPC returns the expected number of logging categories.
|
|
||||||
assert_equal(len(node.logging()), 27)
|
|
||||||
|
|
||||||
# Test toggling a logging category on/off/on with the logging RPC.
|
# Test toggling a logging category on/off/on with the logging RPC.
|
||||||
assert_equal(node.logging()['qt'], True)
|
assert_equal(node.logging()['qt'], True)
|
||||||
node.logging(exclude=['qt'])
|
node.logging(exclude=['qt'])
|
||||||
|
|
Loading…
Add table
Reference in a new issue