From 12982b30346685b0d4289555e017217ca8c145ca Mon Sep 17 00:00:00 2001
From: Andrzej Cichocki <andrzej.cichocki@r3.com>
Date: Mon, 2 Oct 2017 15:59:55 +0100
Subject: [PATCH] Move dbCloser to MockNode, the only thing that uses it.
 (#1512)

---
 .../src/main/kotlin/net/corda/node/internal/AbstractNode.kt | 6 +-----
 .../src/main/kotlin/net/corda/testing/node/MockNode.kt      | 6 ++++++
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/node/src/main/kotlin/net/corda/node/internal/AbstractNode.kt b/node/src/main/kotlin/net/corda/node/internal/AbstractNode.kt
index ea492d2a64..b0293ed838 100644
--- a/node/src/main/kotlin/net/corda/node/internal/AbstractNode.kt
+++ b/node/src/main/kotlin/net/corda/node/internal/AbstractNode.kt
@@ -146,7 +146,6 @@ abstract class AbstractNode(open val configuration: NodeConfiguration,
     protected lateinit var network: MessagingService
     protected val runOnStop = ArrayList<() -> Any?>()
     protected lateinit var database: CordaPersistence
-    protected var dbCloser: (() -> Any?)? = null
     lateinit var cordappProvider: CordappProviderImpl
     protected val cordappLoader by lazy { makeCordappLoader() }
 
@@ -476,10 +475,7 @@ abstract class AbstractNode(open val configuration: NodeConfiguration,
             database.transaction {
                 log.info("Connected to ${database.dataSource.connection.metaData.databaseProductName} database.")
             }
-            this.database::close.let {
-                dbCloser = it
-                runOnStop += it
-            }
+            runOnStop += database::close
             return database.transaction {
                 insideTransaction()
             }
diff --git a/testing/node-driver/src/main/kotlin/net/corda/testing/node/MockNode.kt b/testing/node-driver/src/main/kotlin/net/corda/testing/node/MockNode.kt
index 63dd79f8d8..9ef99e42e8 100644
--- a/testing/node-driver/src/main/kotlin/net/corda/testing/node/MockNode.kt
+++ b/testing/node-driver/src/main/kotlin/net/corda/testing/node/MockNode.kt
@@ -241,6 +241,12 @@ class MockNetwork(private val networkSendManuallyPumped: Boolean = false,
         // It is used from the network visualiser tool.
         @Suppress("unused") val place: WorldMapLocation get() = findMyLocation()!!
 
+        private var dbCloser: (() -> Any?)? = null
+        override fun <T> initialiseDatabasePersistence(insideTransaction: () -> T) = super.initialiseDatabasePersistence {
+            dbCloser = database::close
+            insideTransaction()
+        }
+
         fun disableDBCloseOnStop() {
             runOnStop.remove(dbCloser)
         }