aboutsummaryrefslogtreecommitdiff
path: root/src/node/blockstorage.h
diff options
context:
space:
mode:
authorTheCharlatan <seb.kung@gmail.com>2024-04-05 12:44:24 +0200
committerTheCharlatan <seb.kung@gmail.com>2024-05-16 11:28:46 +0200
commitb47bd959207e82555f07e028cc2246943d32d4c3 (patch)
treee18c9dcd1242a3bb965247da9ef29ddc185602e6 /src/node/blockstorage.h
parent42d5a1ff25a8045b6f4c09fa1fb71736dbccc034 (diff)
downloadbitcoin-b47bd959207e82555f07e028cc2246943d32d4c3.tar.xz
kernel: De-globalize fReindex
fReindex is one of the last remaining globals exposed by the kernel library, so move it into the blockstorage class to reduce the amount of global mutable state and make the kernel library a bit less awkward to use.
Diffstat (limited to 'src/node/blockstorage.h')
-rw-r--r--src/node/blockstorage.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/node/blockstorage.h b/src/node/blockstorage.h
index ce514cc645..1867c70415 100644
--- a/src/node/blockstorage.h
+++ b/src/node/blockstorage.h
@@ -76,8 +76,6 @@ static const unsigned int MAX_BLOCKFILE_SIZE = 0x8000000; // 128 MiB
/** Size of header written by WriteBlockToDisk before a serialized CBlock */
static constexpr size_t BLOCK_SERIALIZATION_HEADER_SIZE = std::tuple_size_v<MessageStartChars> + sizeof(unsigned int);
-extern std::atomic_bool fReindex;
-
// Because validation code takes pointers to the map's CBlockIndex objects, if
// we ever switch to another associative container, we need to either use a
// container that has stable addressing (true of all std associative
@@ -254,11 +252,19 @@ public:
explicit BlockManager(const util::SignalInterrupt& interrupt, Options opts)
: m_prune_mode{opts.prune_target > 0},
m_opts{std::move(opts)},
- m_interrupt{interrupt} {};
+ m_interrupt{interrupt},
+ m_reindexing{m_opts.reindex} {};
const util::SignalInterrupt& m_interrupt;
std::atomic<bool> m_importing{false};
+ /**
+ * Tracks if a reindex is currently in progress. Set to true when a reindex
+ * is requested and false when reindexing completes. Its value is persisted
+ * in the BlockTreeDB across restarts.
+ */
+ std::atomic_bool m_reindexing;
+
BlockMap m_block_index GUARDED_BY(cs_main);
/**
@@ -322,7 +328,7 @@ public:
[[nodiscard]] uint64_t GetPruneTarget() const { return m_opts.prune_target; }
static constexpr auto PRUNE_TARGET_MANUAL{std::numeric_limits<uint64_t>::max()};
- [[nodiscard]] bool LoadingBlocks() const { return m_importing || fReindex; }
+ [[nodiscard]] bool LoadingBlocks() const { return m_importing || m_reindexing; }
/** Calculate the amount of disk space the block & undo files currently use */
uint64_t CalculateCurrentUsage();