Browse Source

Use transactions-updated as flush condition

The normal checkpointing during the block chain download is reduced
to every five minutes only, but forced every 200000 updated transactions.
miguelfreitas
Pieter Wuille 13 years ago
parent
commit
25c5eca893
  1. 14
      src/db.cpp

14
src/db.cpp

@ -28,6 +28,7 @@ static bool fDbEnvInit = false;
DbEnv dbenv(0); DbEnv dbenv(0);
static map<string, int> mapFileUseCount; static map<string, int> mapFileUseCount;
static map<string, Db*> mapDb; static map<string, Db*> mapDb;
static int64 nTxn = 0;
static void EnvShutdown() static void EnvShutdown()
{ {
@ -160,8 +161,15 @@ void CDB::Close()
nMinutes = 1; nMinutes = 1;
if (strFile == "addr.dat") if (strFile == "addr.dat")
nMinutes = 2; nMinutes = 2;
if (strFile == "blkindex.dat" && IsInitialBlockDownload() && nBestHeight % 5000 != 0) if (strFile == "blkindex.dat" && IsInitialBlockDownload())
nMinutes = 1; nMinutes = 5;
if (nMinutes == 0 || nTxn > 200000)
{
nTxn = 0;
nMinutes = 0;
}
dbenv.txn_checkpoint(0, nMinutes, 0); dbenv.txn_checkpoint(0, nMinutes, 0);
CRITICAL_BLOCK(cs_db) CRITICAL_BLOCK(cs_db)
@ -336,6 +344,7 @@ bool CTxDB::ReadTxIndex(uint256 hash, CTxIndex& txindex)
bool CTxDB::UpdateTxIndex(uint256 hash, const CTxIndex& txindex) bool CTxDB::UpdateTxIndex(uint256 hash, const CTxIndex& txindex)
{ {
assert(!fClient); assert(!fClient);
nTxn++;
return Write(make_pair(string("tx"), hash), txindex); return Write(make_pair(string("tx"), hash), txindex);
} }
@ -346,6 +355,7 @@ bool CTxDB::AddTxIndex(const CTransaction& tx, const CDiskTxPos& pos, int nHeigh
// Add to tx index // Add to tx index
uint256 hash = tx.GetHash(); uint256 hash = tx.GetHash();
CTxIndex txindex(pos, tx.vout.size()); CTxIndex txindex(pos, tx.vout.size());
nTxn++;
return Write(make_pair(string("tx"), hash), txindex); return Write(make_pair(string("tx"), hash), txindex);
} }

Loading…
Cancel
Save