From 3f43d8ad21fa4e928c52309bd26c703e202afc1d Mon Sep 17 00:00:00 2001 From: Christian Sailer <christian.sailer@r3.com> Date: Mon, 30 Oct 2017 11:55:04 +0000 Subject: [PATCH] Add helper for checking whether to check checkpoints and unit test it. --- .../net/corda/node/services/config/NodeConfiguration.kt | 4 ++++ .../node/services/statemachine/StateMachineManagerImpl.kt | 3 ++- .../node/services/config/NodeConfigurationImplTest.kt | 8 ++++---- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/node/src/main/kotlin/net/corda/node/services/config/NodeConfiguration.kt b/node/src/main/kotlin/net/corda/node/services/config/NodeConfiguration.kt index 43a07000f3..8423384d90 100644 --- a/node/src/main/kotlin/net/corda/node/services/config/NodeConfiguration.kt +++ b/node/src/main/kotlin/net/corda/node/services/config/NodeConfiguration.kt @@ -49,6 +49,10 @@ interface NodeConfiguration : NodeSSLConfiguration { val detectPublicIp: Boolean get() = true } +fun NodeConfiguration.shouldCheckCheckpoints(): Boolean{ + return this.devMode && this.devModeOptions?.disableCheckpointChecker != true +} + data class NotaryConfig(val validating: Boolean, val raft: RaftConfig? = null, val bftSMaRt: BFTSMaRtConfiguration? = null, diff --git a/node/src/main/kotlin/net/corda/node/services/statemachine/StateMachineManagerImpl.kt b/node/src/main/kotlin/net/corda/node/services/statemachine/StateMachineManagerImpl.kt index 78dd79cdaa..391b636684 100644 --- a/node/src/main/kotlin/net/corda/node/services/statemachine/StateMachineManagerImpl.kt +++ b/node/src/main/kotlin/net/corda/node/services/statemachine/StateMachineManagerImpl.kt @@ -31,6 +31,7 @@ import net.corda.node.internal.InitiatedFlowFactory import net.corda.node.services.api.Checkpoint import net.corda.node.services.api.CheckpointStorage import net.corda.node.services.api.ServiceHubInternal +import net.corda.node.services.config.shouldCheckCheckpoints import net.corda.node.services.messaging.ReceivedMessage import net.corda.node.services.messaging.TopicSession import net.corda.node.utilities.* @@ -88,7 +89,7 @@ class StateMachineManagerImpl( private val scheduler = FiberScheduler() private val mutex = ThreadBox(InnerState()) // This thread (only enabled in dev mode) deserialises checkpoints in the background to shake out bugs in checkpoint restore. - private val checkpointCheckerThread = if (serviceHub.configuration.devModeOptions?.disableCheckpointChecker != true) { + private val checkpointCheckerThread = if (serviceHub.configuration.shouldCheckCheckpoints()) { newNamedSingleThreadExecutor("CheckpointChecker") } else { null diff --git a/node/src/test/kotlin/net/corda/node/services/config/NodeConfigurationImplTest.kt b/node/src/test/kotlin/net/corda/node/services/config/NodeConfigurationImplTest.kt index 0bdf58e6f8..bb5c405ee6 100644 --- a/node/src/test/kotlin/net/corda/node/services/config/NodeConfigurationImplTest.kt +++ b/node/src/test/kotlin/net/corda/node/services/config/NodeConfigurationImplTest.kt @@ -23,10 +23,10 @@ class NodeConfigurationImplTest { @Test fun `check devModeOptions flag helper`() { - assertFalse { configDebugOptions(true, null).devModeOptions?.disableCheckpointChecker == true } - assertFalse { configDebugOptions(true, DevModeOptions()).devModeOptions?.disableCheckpointChecker == true } - assertFalse { configDebugOptions(true, DevModeOptions(false)).devModeOptions?.disableCheckpointChecker == true } - assertTrue { configDebugOptions(true, DevModeOptions(true)).devModeOptions?.disableCheckpointChecker == true } + assertTrue { configDebugOptions(true, null).shouldCheckCheckpoints() } + assertTrue { configDebugOptions(true, DevModeOptions()).shouldCheckCheckpoints() } + assertTrue { configDebugOptions(true, DevModeOptions(false)).shouldCheckCheckpoints() } + assertFalse { configDebugOptions(true, DevModeOptions(true)).shouldCheckCheckpoints() } } private fun configDebugOptions(devMode: Boolean, devModeOptions: DevModeOptions?) : NodeConfiguration {