@ -2005,10 +2005,10 @@ bool static FlushStateToDisk(CValidationState &state, FlushStateMode mode, int n
nLastSetChain = nNow ;
nLastSetChain = nNow ;
}
}
int64_t nMempoolSizeMax = GetArg ( " -maxmempool " , DEFAULT_MAX_MEMPOOL_SIZE ) * 1000000 ;
int64_t nMempoolSizeMax = GetArg ( " -maxmempool " , DEFAULT_MAX_MEMPOOL_SIZE ) * 1000000 ;
int64_t cacheSize = pcoinsTip - > DynamicMemoryUsage ( ) * 2 ; // Compensate for extra memory peak (x1.5-x1.9) at flush time.
int64_t cacheSize = pcoinsTip - > DynamicMemoryUsage ( ) * DB_PEAK_USAGE_FACTOR ;
int64_t nTotalSpace = nCoinCacheUsage + std : : max < int64_t > ( nMempoolSizeMax - nMempoolUsage , 0 ) ;
int64_t nTotalSpace = nCoinCacheUsage + std : : max < int64_t > ( nMempoolSizeMax - nMempoolUsage , 0 ) ;
// The cache is large and we're within 10% and 100 MiB of the limit, but we have time now (not in the middle of a block processing).
// The cache is large and we're within 10% and 100 MiB of the limit, but we have time now (not in the middle of a block processing).
bool fCacheLarge = mode = = FLUSH_STATE_PERIODIC & & cacheSize > std : : max ( ( 9 * nTotalSpace ) / 10 , nTotalSpace - 100 * 1024 * 1024 ) ;
bool fCacheLarge = mode = = FLUSH_STATE_PERIODIC & & cacheSize > std : : max ( ( 9 * nTotalSpace ) / 10 , nTotalSpace - MAX_BLOCK_COINSDB_USAGE * 1024 * 1024 ) ;
// The cache is over the limit, we have to write now.
// The cache is over the limit, we have to write now.
bool fCacheCritical = mode = = FLUSH_STATE_IF_NEEDED & & cacheSize > nTotalSpace ;
bool fCacheCritical = mode = = FLUSH_STATE_IF_NEEDED & & cacheSize > nTotalSpace ;
// It's been a while since we wrote the block index to disk. Do this frequently, so we don't need to redownload after a crash.
// It's been a while since we wrote the block index to disk. Do this frequently, so we don't need to redownload after a crash.