aboutsummaryrefslogtreecommitdiff
path: root/src/txdb.cpp
diff options
context:
space:
mode:
authorPieter Wuille <pieter.wuille@gmail.com>2017-04-05 01:37:09 -0700
committerPieter Wuille <pieter.wuille@gmail.com>2017-06-26 10:46:51 -0700
commiteaca1b7b08b4911292d49efbce8471cbc9ca0e1c (patch)
tree9b6bde7479dc3a0550a0d550f914cdebcbcdd0e2 /src/txdb.cpp
parent0580ee08ff413f729bd34e5a5ce0fb75894f0256 (diff)
Random db flush crash simulator
Diffstat (limited to 'src/txdb.cpp')
-rw-r--r--src/txdb.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/txdb.cpp b/src/txdb.cpp
index f0e5098b11..7de11cc617 100644
--- a/src/txdb.cpp
+++ b/src/txdb.cpp
@@ -7,8 +7,10 @@
#include "chainparams.h"
#include "hash.h"
+#include "random.h"
#include "pow.h"
#include "uint256.h"
+#include "util.h"
#include <stdint.h>
@@ -82,7 +84,7 @@ bool CCoinsViewDB::BatchWrite(CCoinsMap &mapCoins, const uint256 &hashBlock) {
size_t count = 0;
size_t changed = 0;
size_t batch_size = (size_t)GetArg("-dbbatchsize", nDefaultDbBatchSize);
-
+ int crash_simulate = GetArg("-dbcrashratio", 0);
uint256 old_tip = GetBestBlock();
if (old_tip.IsNull()) {
@@ -124,6 +126,13 @@ bool CCoinsViewDB::BatchWrite(CCoinsMap &mapCoins, const uint256 &hashBlock) {
LogPrint(BCLog::COINDB, "Writing partial batch of %.2f MiB\n", batch.SizeEstimate() * (1.0 / 1048576.0));
db.WriteBatch(batch);
batch.Clear();
+ if (crash_simulate) {
+ static FastRandomContext rng;
+ if (rng.randrange(crash_simulate) == 0) {
+ LogPrintf("Simulating a crash. Goodbye.\n");
+ exit(0);
+ }
+ }
}
}