From 7350cd9d1e1c8f736d8d3d2041b8f64df541ee41 Mon Sep 17 00:00:00 2001 From: Michele Sollecito Date: Mon, 4 Jun 2018 09:35:38 +0100 Subject: [PATCH] [CORDA-1408]: Fixed some Demobench bugs. (#3288) --- .../node/services/vault/NodeVaultService.kt | 2 +- .../corda/demobench/model/InstallFactory.kt | 3 ++- .../net/corda/demobench/model/NodeConfig.kt | 15 +++++++------ .../corda/demobench/views/NodeTerminalView.kt | 21 +++++++++++++++---- 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/node/src/main/kotlin/net/corda/node/services/vault/NodeVaultService.kt b/node/src/main/kotlin/net/corda/node/services/vault/NodeVaultService.kt index f2ada92b06..e13224e05e 100644 --- a/node/src/main/kotlin/net/corda/node/services/vault/NodeVaultService.kt +++ b/node/src/main/kotlin/net/corda/node/services/vault/NodeVaultService.kt @@ -408,7 +408,7 @@ class NodeVaultService( @Throws(VaultQueryException::class) private fun _queryBy(criteria: QueryCriteria, paging: PageSpecification, sorting: Sort, contractStateType: Class, skipPagingChecks: Boolean): Vault.Page { - log.info("Vault Query for contract type: $contractStateType, criteria: $criteria, pagination: $paging, sorting: $sorting") + log.debug { "Vault Query for contract type: $contractStateType, criteria: $criteria, pagination: $paging, sorting: $sorting" } return database.transaction { // calculate total results where a page specification has been defined var totalStates = -1L diff --git a/tools/demobench/src/main/kotlin/net/corda/demobench/model/InstallFactory.kt b/tools/demobench/src/main/kotlin/net/corda/demobench/model/InstallFactory.kt index dc253888cf..86f987c33a 100644 --- a/tools/demobench/src/main/kotlin/net/corda/demobench/model/InstallFactory.kt +++ b/tools/demobench/src/main/kotlin/net/corda/demobench/model/InstallFactory.kt @@ -4,6 +4,7 @@ import com.typesafe.config.Config import net.corda.core.internal.deleteRecursively import net.corda.core.internal.div import net.corda.core.utilities.NetworkHostAndPort +import net.corda.nodeapi.internal.config.UnknownConfigKeysPolicy import net.corda.nodeapi.internal.config.parseAs import tornadofx.* import java.io.IOException @@ -19,7 +20,7 @@ class InstallFactory : Controller() { require(nodeController.isPortValid(port)) { "Invalid port $port" } } - val nodeConfig = config.parseAs() + val nodeConfig = config.parseAs(UnknownConfigKeysPolicy.IGNORE::handle) nodeConfig.p2pAddress.checkPort() nodeConfig.rpcAddress.checkPort() nodeConfig.webAddress.checkPort() diff --git a/tools/demobench/src/main/kotlin/net/corda/demobench/model/NodeConfig.kt b/tools/demobench/src/main/kotlin/net/corda/demobench/model/NodeConfig.kt index 37cdc76263..fbe58670ad 100644 --- a/tools/demobench/src/main/kotlin/net/corda/demobench/model/NodeConfig.kt +++ b/tools/demobench/src/main/kotlin/net/corda/demobench/model/NodeConfig.kt @@ -33,7 +33,10 @@ data class NodeConfig( val issuableCurrencies: List = emptyList(), /** Pass-through for generating node.conf with external DB */ val dataSourceProperties: Properties? = null, - val database: Properties? = null + val database: Properties? = null, + private val devMode: Boolean = true, + private val detectPublicIp: Boolean = false, + private val useTestClock: Boolean = true ) { companion object { val renderOptions: ConfigRenderOptions = ConfigRenderOptions.defaults().setOriginComments(false) @@ -41,14 +44,9 @@ data class NodeConfig( const val cordappDirName = "cordapps" } - @Suppress("unused") - private val detectPublicIp = false - @Suppress("unused") - private val useTestClock = true - fun nodeConf(): Config { - val basic = NodeConfigurationData(myLegalName, p2pAddress, rpcAddress, notary, h2port, rpcUsers, useTestClock, detectPublicIp).toConfig() + val basic = NodeConfigurationData(myLegalName, p2pAddress, rpcAddress, notary, h2port, rpcUsers, useTestClock, detectPublicIp, devMode).toConfig() val rpcSettings = empty() .withValue("address", ConfigValueFactory.fromAnyRef(rpcAddress.toString())) .withValue("adminAddress", ConfigValueFactory.fromAnyRef(rpcAdminAddress.toString())) @@ -78,7 +76,8 @@ private data class NodeConfigurationData( val h2port: Int, val rpcUsers: List = listOf(NodeConfig.defaultUser), val useTestClock: Boolean, - val detectPublicIp: Boolean + val detectPublicIp: Boolean, + val devMode: Boolean ) private data class WebServerConfigurationData( diff --git a/tools/demobench/src/main/kotlin/net/corda/demobench/views/NodeTerminalView.kt b/tools/demobench/src/main/kotlin/net/corda/demobench/views/NodeTerminalView.kt index d1e2f59492..b91677b41a 100644 --- a/tools/demobench/src/main/kotlin/net/corda/demobench/views/NodeTerminalView.kt +++ b/tools/demobench/src/main/kotlin/net/corda/demobench/views/NodeTerminalView.kt @@ -13,6 +13,7 @@ import javafx.scene.layout.HBox import javafx.scene.layout.StackPane import javafx.scene.layout.VBox import javafx.util.Duration +import net.corda.client.rpc.RPCException import net.corda.core.concurrent.match import net.corda.core.contracts.ContractState import net.corda.core.messaging.CordaRPCOps @@ -201,13 +202,25 @@ class NodeTerminalView : Fragment() { } val fxScheduler = Schedulers.from(Platform::runLater) - subscriptions.add(txNext.observeOn(fxScheduler).subscribe { + subscriptions.add(txNext.observeOn(fxScheduler).subscribe({ transactions.value = (++txCount).toString() - }) - subscriptions.add(stateNext.observeOn(fxScheduler).subscribe { + }, { error -> + if (error is RPCException && error.message?.contains("Connection failure detected") == true) { + // Ignore this ^^^, it only happens when we shutdown a node in Demobench. + } else { + throw error + } + })) + subscriptions.add(stateNext.observeOn(fxScheduler).subscribe({ stateCount += (it.produced.size - it.consumed.size) states.value = stateCount.toString() - }) + }, { error -> + if (error is RPCException && error.message?.contains("Connection failure detected") == true) { + // Ignore this ^^^, it only happens when we shutdown a node in Demobench. + } else { + throw error + } + })) } catch (e: Exception) { log.log(Level.WARNING, "RPC failed: ${e.message}", e) }