Flush on log size instead of transaction count
authorPieter Wuille <pieter.wuille@gmail.com>
Thu, 5 Apr 2012 15:54:30 +0000 (17:54 +0200)
committerPieter Wuille <pieter.wuille@gmail.com>
Thu, 5 Apr 2012 18:29:47 +0000 (20:29 +0200)
src/db.cpp
src/init.cpp

index 2a09e2e..b86a56e 100644 (file)
@@ -28,7 +28,6 @@ static bool fDbEnvInit = false;
 DbEnv dbenv(0);
 static map<string, int> mapFileUseCount;
 static map<string, Db*> mapDb;
-static int64 nTxn = 0;
 
 static void EnvShutdown()
 {
@@ -164,13 +163,7 @@ void CDB::Close()
     if (strFile == "blkindex.dat" && IsInitialBlockDownload())
         nMinutes = 5;
 
-    if (nMinutes == 0 || nTxn > 200000)
-    {
-        nTxn = 0;
-        nMinutes = 0;
-    }
-
-    dbenv.txn_checkpoint(0, nMinutes, 0);
+    dbenv.txn_checkpoint(nMinutes ? GetArg("-dblogsize", 100)*1024 : 0, nMinutes, 0);
 
     CRITICAL_BLOCK(cs_db)
         --mapFileUseCount[strFile];
@@ -344,7 +337,6 @@ 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);
 }
 
@@ -355,7 +347,6 @@ 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);
 }
 
index 05b4e87..3f900fc 100644 (file)
@@ -171,6 +171,7 @@ bool AppInit2(int argc, char* argv[])
             "  -splash          \t\t  " + _("Show splash screen on startup (default: 1)") + "\n" +
             "  -datadir=<dir>   \t\t  " + _("Specify data directory") + "\n" +
             "  -dbcache=<n>     \t\t  " + _("Set database cache size in megabytes (default: 25)") + "\n" +
+            "  -dblogsize=<n>   \t\t  " + _("Set database disk log size in megabytes (default: 100)") + "\n" +
             "  -timeout=<n>     \t  "   + _("Specify connection timeout (in milliseconds)") + "\n" +
             "  -proxy=<ip:port> \t  "   + _("Connect through socks4 proxy") + "\n" +
             "  -dns             \t  "   + _("Allow DNS lookups for addnode and connect") + "\n" +