aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/crypto/muhash.h2
-rw-r--r--src/rpc/blockchain.cpp4
-rw-r--r--src/rpc/util.cpp2
-rw-r--r--src/validation.cpp26
4 files changed, 19 insertions, 15 deletions
diff --git a/src/crypto/muhash.h b/src/crypto/muhash.h
index c023a8b9d3..0c050cd32b 100644
--- a/src/crypto/muhash.h
+++ b/src/crypto/muhash.h
@@ -24,7 +24,7 @@ private:
public:
static constexpr size_t BYTE_SIZE = 384;
-#ifdef HAVE___INT128
+#ifdef __SIZEOF_INT128__
typedef unsigned __int128 double_limb_t;
typedef uint64_t limb_t;
static constexpr int LIMBS = 48;
diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp
index 7b37635db0..050d9dd980 100644
--- a/src/rpc/blockchain.cpp
+++ b/src/rpc/blockchain.cpp
@@ -1134,7 +1134,7 @@ CoinStatsHashType ParseHashType(const std::string& hash_type_input)
} else if (hash_type_input == "none") {
return CoinStatsHashType::NONE;
} else {
- throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("%s is not a valid hash_type", hash_type_input));
+ throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("'%s' is not a valid hash_type", hash_type_input));
}
}
@@ -2213,7 +2213,7 @@ static RPCHelpMan getblockstats()
for (const std::string& stat : stats) {
const UniValue& value = ret_all[stat];
if (value.isNull()) {
- throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Invalid selected statistic %s", stat));
+ throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Invalid selected statistic '%s'", stat));
}
ret.pushKV(stat, value);
}
diff --git a/src/rpc/util.cpp b/src/rpc/util.cpp
index 4a5cd0a4be..57e3da0351 100644
--- a/src/rpc/util.cpp
+++ b/src/rpc/util.cpp
@@ -210,7 +210,7 @@ CPubKey AddrToPubKey(const FillableSigningProvider& keystore, const std::string&
}
CKeyID key = GetKeyForDestination(keystore, dest);
if (key.IsNull()) {
- throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, strprintf("%s does not refer to a key", addr_in));
+ throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, strprintf("'%s' does not refer to a key", addr_in));
}
CPubKey vchPubKey;
if (!keystore.GetPubKey(key, vchPubKey)) {
diff --git a/src/validation.cpp b/src/validation.cpp
index d4203de56a..861831444a 100644
--- a/src/validation.cpp
+++ b/src/validation.cpp
@@ -4840,6 +4840,17 @@ bool ChainstateManager::ActivateSnapshot(
return true;
}
+static void FlushSnapshotToDisk(CCoinsViewCache& coins_cache, bool snapshot_loaded)
+{
+ LOG_TIME_MILLIS_WITH_CATEGORY_MSG_ONCE(
+ strprintf("%s (%.2f MB)",
+ snapshot_loaded ? "saving snapshot chainstate" : "flushing coins cache",
+ coins_cache.DynamicMemoryUsage() / (1000 * 1000)),
+ BCLog::LogFlags::ALL);
+
+ coins_cache.Flush();
+}
+
bool ChainstateManager::PopulateAndValidateSnapshot(
CChainState& snapshot_chainstate,
CAutoFile& coins_file,
@@ -4877,7 +4888,6 @@ bool ChainstateManager::PopulateAndValidateSnapshot(
uint64_t coins_left = metadata.m_coins_count;
LogPrintf("[snapshot] loading coins from snapshot %s\n", base_blockhash.ToString());
- int64_t flush_now{0};
int64_t coins_processed{0};
while (coins_left > 0) {
@@ -4921,19 +4931,14 @@ bool ChainstateManager::PopulateAndValidateSnapshot(
const auto snapshot_cache_state = WITH_LOCK(::cs_main,
return snapshot_chainstate.GetCoinsCacheSizeState());
- if (snapshot_cache_state >=
- CoinsCacheSizeState::CRITICAL) {
- LogPrintf("[snapshot] flushing coins cache (%.2f MB)... ", /* Continued */
- coins_cache.DynamicMemoryUsage() / (1000 * 1000));
- flush_now = GetTimeMillis();
-
+ if (snapshot_cache_state >= CoinsCacheSizeState::CRITICAL) {
// This is a hack - we don't know what the actual best block is, but that
// doesn't matter for the purposes of flushing the cache here. We'll set this
// to its correct value (`base_blockhash`) below after the coins are loaded.
coins_cache.SetBestBlock(GetRandHash());
- coins_cache.Flush();
- LogPrintf("done (%.2fms)\n", GetTimeMillis() - flush_now);
+ // No need to acquire cs_main since this chainstate isn't being used yet.
+ FlushSnapshotToDisk(coins_cache, /*snapshot_loaded=*/false);
}
}
}
@@ -4963,9 +4968,8 @@ bool ChainstateManager::PopulateAndValidateSnapshot(
coins_cache.DynamicMemoryUsage() / (1000 * 1000),
base_blockhash.ToString());
- LogPrintf("[snapshot] flushing snapshot chainstate to disk\n");
// No need to acquire cs_main since this chainstate isn't being used yet.
- coins_cache.Flush(); // TODO: if #17487 is merged, add erase=false here for better performance.
+ FlushSnapshotToDisk(coins_cache, /*snapshot_loaded=*/true);
assert(coins_cache.GetBestBlock() == base_blockhash);