From d44cd7ed4b494b64f93b395abc2476ef3f1b5028 Mon Sep 17 00:00:00 2001
From: Sjors Provoost <sjors@sprovoost.nl>
Date: Sun, 11 Feb 2018 12:14:08 +0100
Subject: Reset pblocktree before deleting LevelDB file

Github-Pull: #12401
Rebased-From: a8b5d20f4f171828b2bd70ab2405c42b1e452e5b
Tree-SHA512: 3a87b6113283c3588f46bb5c725ec33ac639e2f91c589b5c0eb4375e3d23bd6c18e7ba96faf70be2afea86d8e6252bf4dbcf9c9ed166ce2d49846ff947a36d2e
---
 src/init.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/init.cpp b/src/init.cpp
index c02917aac1..0896ad0d29 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -1425,6 +1425,9 @@ bool AppInitMain()
                 pcoinsTip.reset();
                 pcoinsdbview.reset();
                 pcoinscatcher.reset();
+                // new CBlockTreeDB tries to delete the existing file, which
+                // fails if it's still open from the previous loop. Close it first:
+                pblocktree.reset();
                 pblocktree.reset(new CBlockTreeDB(nBlockTreeDBCache, false, fReset));
 
                 if (fReset) {
-- 
cgit v1.2.3