validationcaches: Abolish arbitrary limit

1. -maxsigcachesize is a DEBUG_ONLY option

2. Almost 7 years has passed since its semantics change in
   830e3f3d02 from "number of entries" to
   "number of mebibytes"

3. A std::new_handler was added to the codebase after the original PR
   which introduced this limit, which will terminate immediately instead
   of causing trouble by being caught somewhere unexpected.
24.x
Carl Dong 2 years ago
parent 08dbc6ef72
commit b370164b31

@ -96,7 +96,7 @@ bool InitSignatureCache()
{
// nMaxCacheSize is unsigned. If -maxsigcachesize is set to zero,
// setup_bytes creates the minimum possible cache (2 elements).
size_t nMaxCacheSize = std::min(std::max((int64_t)0, gArgs.GetIntArg("-maxsigcachesize", DEFAULT_MAX_SIG_CACHE_SIZE) / 2), MAX_MAX_SIG_CACHE_SIZE) * ((size_t) 1 << 20);
size_t nMaxCacheSize = std::max((int64_t)0, gArgs.GetIntArg("-maxsigcachesize", DEFAULT_MAX_SIG_CACHE_SIZE) / 2) * ((size_t) 1 << 20);
auto setup_results = signatureCache.setup_bytes(nMaxCacheSize);

@ -16,8 +16,6 @@
// systems). Due to how we count cache size, actual memory usage is slightly
// more (~32.25 MB)
static const unsigned int DEFAULT_MAX_SIG_CACHE_SIZE = 32;
// Maximum sig cache size allowed
static const int64_t MAX_MAX_SIG_CACHE_SIZE = 16384;
class CPubKey;

@ -1666,7 +1666,7 @@ bool InitScriptExecutionCache() {
g_scriptExecutionCacheHasher.Write(nonce.begin(), 32);
// nMaxCacheSize is unsigned. If -maxsigcachesize is set to zero,
// setup_bytes creates the minimum possible cache (2 elements).
size_t nMaxCacheSize = std::min(std::max((int64_t)0, gArgs.GetIntArg("-maxsigcachesize", DEFAULT_MAX_SIG_CACHE_SIZE) / 2), MAX_MAX_SIG_CACHE_SIZE) * ((size_t) 1 << 20);
size_t nMaxCacheSize = std::max((int64_t)0, gArgs.GetIntArg("-maxsigcachesize", DEFAULT_MAX_SIG_CACHE_SIZE) / 2) * ((size_t) 1 << 20);
auto setup_results = g_scriptExecutionCache.setup_bytes(nMaxCacheSize);

Loading…
Cancel
Save