Mercurial > hg > bitcoin
changeset 2116:94844608a7d7 draft
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.
author | Pieter Wuille <pieter.wuille@gmail.com> |
---|---|
date | Wed, 28 Mar 2012 22:09:18 +0200 |
parents | bc3eab71a1ac |
children | 07216ae7d96a |
files | src/db.cpp |
diffstat | 1 files changed, 12 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/db.cpp +++ b/src/db.cpp @@ -28,6 +28,7 @@ DbEnv dbenv(0); static map<string, int> mapFileUseCount; static map<string, Db*> mapDb; +static int64 nTxn = 0; static void EnvShutdown() { @@ -160,8 +161,15 @@ nMinutes = 1; if (strFile == "addr.dat") nMinutes = 2; - if (strFile == "blkindex.dat" && IsInitialBlockDownload() && nBestHeight % 5000 != 0) - nMinutes = 1; + if (strFile == "blkindex.dat" && IsInitialBlockDownload()) + nMinutes = 5; + + if (nMinutes == 0 || nTxn > 200000) + { + nTxn = 0; + nMinutes = 0; + } + dbenv.txn_checkpoint(0, nMinutes, 0); CRITICAL_BLOCK(cs_db) @@ -336,6 +344,7 @@ bool CTxDB::UpdateTxIndex(uint256 hash, const CTxIndex& txindex) { assert(!fClient); + nTxn++; return Write(make_pair(string("tx"), hash), txindex); } @@ -346,6 +355,7 @@ // Add to tx index uint256 hash = tx.GetHash(); CTxIndex txindex(pos, tx.vout.size()); + nTxn++; return Write(make_pair(string("tx"), hash), txindex); }