Don't call lsn_reset at periodic time

Signed-off-by: Anthony Fieroni <bvbfan@abv.bg>
This commit is contained in:
Anthony Fieroni 2020-01-23 10:16:58 +02:00
parent 6153986566
commit f0f72e5c57
2 changed files with 6 additions and 5 deletions

View file

@ -506,10 +506,10 @@ bool BerkeleyEnvironment::Salvage(const std::string& strFile, bool fAggressive,
} }
void BerkeleyEnvironment::CheckpointLSN(const std::string& strFile) void BerkeleyEnvironment::CheckpointLSN(const std::string& strFile, bool lsnReset)
{ {
dbenv->txn_checkpoint(0, 0, 0); dbenv->txn_checkpoint(0, 0, 0);
if (fMockDb) if (fMockDb || !lsnReset)
return; return;
dbenv->lsn_reset(strFile.c_str(), 0); dbenv->lsn_reset(strFile.c_str(), 0);
} }
@ -836,9 +836,10 @@ bool BerkeleyBatch::PeriodicFlush(BerkeleyDatabase& database)
// Flush wallet file so it's self contained // Flush wallet file so it's self contained
env->CloseDb(strFile); env->CloseDb(strFile);
env->CheckpointLSN(strFile); // don't call lsn_reset at periodic time
// it causes performace issues on big wallets
env->CheckpointLSN(strFile, /* lsnReset */ false);
env->mapFileUseCount.erase(mi++);
LogPrint(BCLog::DB, "Flushed %s %dms\n", strFile, GetTimeMillis() - nStart); LogPrint(BCLog::DB, "Flushed %s %dms\n", strFile, GetTimeMillis() - nStart);
ret = true; ret = true;
} }

View file

@ -83,7 +83,7 @@ public:
bool Open(bool retry); bool Open(bool retry);
void Close(); void Close();
void Flush(bool fShutdown); void Flush(bool fShutdown);
void CheckpointLSN(const std::string& strFile); void CheckpointLSN(const std::string& strFile, bool lsnReset = true);
void CloseDb(const std::string& strFile); void CloseDb(const std::string& strFile);
void ReloadDbEnv(); void ReloadDbEnv();