diff options
author | Gavin Andresen <gavinandresen@gmail.com> | 2012-03-29 12:10:30 -0700 |
---|---|---|
committer | Gavin Andresen <gavinandresen@gmail.com> | 2012-03-29 12:10:30 -0700 |
commit | f146061d24e5b7963250b48c2326f123187ed6b1 (patch) | |
tree | 54618478517d0c7c9098ef9ef31b65257149a212 | |
parent | dac1888c189e71402ec9fb837f8adbb8cc1f855c (diff) | |
parent | 25c5eca8939832e94556810ae30f1f7830e1c29c (diff) |
Merge pull request #1010 from sipa/fastblocks2
Use transactions-updated as flush condition
-rw-r--r-- | src/db.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/db.cpp b/src/db.cpp index 79c4e4778f..2a09e2e673 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -28,6 +28,7 @@ static bool fDbEnvInit = false; DbEnv dbenv(0); static map<string, int> mapFileUseCount; static map<string, Db*> mapDb; +static int64 nTxn = 0; static void EnvShutdown() { @@ -160,8 +161,15 @@ void CDB::Close() 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::ReadTxIndex(uint256 hash, CTxIndex& txindex) bool CTxDB::UpdateTxIndex(uint256 hash, const CTxIndex& txindex) { assert(!fClient); + nTxn++; 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 uint256 hash = tx.GetHash(); CTxIndex txindex(pos, tx.vout.size()); + nTxn++; return Write(make_pair(string("tx"), hash), txindex); } |