From 6a569fb3f19553a17412cc100bc836346720d152 Mon Sep 17 00:00:00 2001 From: Andrzej Cichocki Date: Fri, 10 Nov 2017 16:40:18 +0000 Subject: [PATCH] Retire findTokenizableService. (#2036) --- .../main/kotlin/net/corda/node/internal/AbstractNode.kt | 8 +------- .../transactions/BFTNonValidatingNotaryService.kt | 2 +- .../net/corda/node/services/transactions/BFTSMaRt.kt | 6 +++--- .../kotlin/net/corda/irs/api/NodeInterestRatesTest.kt | 2 +- .../main/kotlin/net/corda/netmap/simulation/Simulation.kt | 2 +- .../src/main/kotlin/net/corda/testing/node/MockNode.kt | 3 +-- 6 files changed, 8 insertions(+), 15 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 82a4b07bd9..952fae0e53 100644 --- a/node/src/main/kotlin/net/corda/node/internal/AbstractNode.kt +++ b/node/src/main/kotlin/net/corda/node/internal/AbstractNode.kt @@ -377,12 +377,6 @@ abstract class AbstractNode(val configuration: NodeConfiguration, return service } - fun findTokenizableService(clazz: Class): T? { - return tokenizableServices.firstOrNull { clazz.isAssignableFrom(it.javaClass) }?.let { uncheckedCast(it) } - } - - inline fun findTokenizableService() = findTokenizableService(T::class.java) - private fun handleCustomNotaryService(service: NotaryService) { runOnStop += service::stop service.start() @@ -614,7 +608,7 @@ abstract class AbstractNode(val configuration: NodeConfiguration, protected open fun makeBFTCluster(notaryKey: PublicKey, bftSMaRtConfig: BFTSMaRtConfiguration): BFTSMaRt.Cluster { return object : BFTSMaRt.Cluster { - override fun waitUntilAllReplicasHaveInitialized() { + override fun waitUntilAllReplicasHaveInitialized(notaryService: BFTNonValidatingNotaryService) { log.warn("A BFT replica may still be initializing, in which case the upcoming consensus change may cause it to spin.") } } diff --git a/node/src/main/kotlin/net/corda/node/services/transactions/BFTNonValidatingNotaryService.kt b/node/src/main/kotlin/net/corda/node/services/transactions/BFTNonValidatingNotaryService.kt index 41fe9abde8..764dc4afea 100644 --- a/node/src/main/kotlin/net/corda/node/services/transactions/BFTNonValidatingNotaryService.kt +++ b/node/src/main/kotlin/net/corda/node/services/transactions/BFTNonValidatingNotaryService.kt @@ -60,7 +60,7 @@ class BFTNonValidatingNotaryService(override val services: ServiceHubInternal, log.info("BFT SMaRt replica $replicaId is running.") } } - BFTSMaRt.Client(it, replicaId, cluster) + BFTSMaRt.Client(it, replicaId, cluster, this) } } diff --git a/node/src/main/kotlin/net/corda/node/services/transactions/BFTSMaRt.kt b/node/src/main/kotlin/net/corda/node/services/transactions/BFTSMaRt.kt index f2b88d76b8..96dd16f5b7 100644 --- a/node/src/main/kotlin/net/corda/node/services/transactions/BFTSMaRt.kt +++ b/node/src/main/kotlin/net/corda/node/services/transactions/BFTSMaRt.kt @@ -72,10 +72,10 @@ object BFTSMaRt { interface Cluster { /** Avoid bug where a replica fails to start due to a consensus change during the BFT startup sequence. */ - fun waitUntilAllReplicasHaveInitialized() + fun waitUntilAllReplicasHaveInitialized(notaryService: BFTNonValidatingNotaryService) } - class Client(config: BFTSMaRtConfig, private val clientId: Int, private val cluster: Cluster) : SingletonSerializeAsToken() { + class Client(config: BFTSMaRtConfig, private val clientId: Int, private val cluster: Cluster, private val notaryService: BFTNonValidatingNotaryService) : SingletonSerializeAsToken() { companion object { private val log = loggerFor() } @@ -106,7 +106,7 @@ object BFTSMaRt { fun commitTransaction(transaction: Any, otherSide: Party): ClusterResponse { require(transaction is FilteredTransaction || transaction is SignedTransaction) { "Unsupported transaction type: ${transaction.javaClass.name}" } awaitClientConnectionToCluster() - cluster.waitUntilAllReplicasHaveInitialized() + cluster.waitUntilAllReplicasHaveInitialized(notaryService) val requestBytes = CommitRequest(transaction, otherSide).serialize().bytes val responseBytes = proxy.invokeOrdered(requestBytes) return responseBytes.deserialize() diff --git a/samples/irs-demo/cordapp/src/test/kotlin/net/corda/irs/api/NodeInterestRatesTest.kt b/samples/irs-demo/cordapp/src/test/kotlin/net/corda/irs/api/NodeInterestRatesTest.kt index 96caf92fff..d61b1d794f 100644 --- a/samples/irs-demo/cordapp/src/test/kotlin/net/corda/irs/api/NodeInterestRatesTest.kt +++ b/samples/irs-demo/cordapp/src/test/kotlin/net/corda/irs/api/NodeInterestRatesTest.kt @@ -210,7 +210,7 @@ class NodeInterestRatesTest { internals.registerInitiatedFlow(NodeInterestRates.FixQueryHandler::class.java) internals.registerInitiatedFlow(NodeInterestRates.FixSignHandler::class.java) database.transaction { - internals.findTokenizableService(NodeInterestRates.Oracle::class.java)!!.knownFixes = TEST_DATA + services.cordaService(NodeInterestRates.Oracle::class.java).knownFixes = TEST_DATA } } val tx = makePartialTX() diff --git a/samples/network-visualiser/src/main/kotlin/net/corda/netmap/simulation/Simulation.kt b/samples/network-visualiser/src/main/kotlin/net/corda/netmap/simulation/Simulation.kt index d512271d41..033c18b8a9 100644 --- a/samples/network-visualiser/src/main/kotlin/net/corda/netmap/simulation/Simulation.kt +++ b/samples/network-visualiser/src/main/kotlin/net/corda/netmap/simulation/Simulation.kt @@ -60,7 +60,7 @@ abstract class Simulation(val networkSendManuallyPumped: Boolean, registerInitiatedFlow(NodeInterestRates.FixSignHandler::class.java) javaClass.classLoader.getResourceAsStream("net/corda/irs/simulation/example.rates.txt").use { database.transaction { - findTokenizableService(NodeInterestRates.Oracle::class.java)!!.uploadFixes(it.reader().readText()) + services.cordaService(NodeInterestRates.Oracle::class.java).uploadFixes(it.reader().readText()) } } } 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 38f1a9553a..9e63ec1ab4 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 @@ -323,13 +323,12 @@ class MockNetwork(defaultParameters: MockNetworkParameters = MockNetworkParamete override fun makeBFTCluster(notaryKey: PublicKey, bftSMaRtConfig: BFTSMaRtConfiguration): BFTSMaRt.Cluster { return object : BFTSMaRt.Cluster { - override fun waitUntilAllReplicasHaveInitialized() { + override fun waitUntilAllReplicasHaveInitialized(notaryService: BFTNonValidatingNotaryService) { val clusterNodes = mockNet.nodes.filter { notaryKey in it.started!!.info.legalIdentities.map { it.owningKey } } if (clusterNodes.size != bftSMaRtConfig.clusterAddresses.size) { throw IllegalStateException("Unable to enumerate all nodes in BFT cluster.") } clusterNodes.forEach { - val notaryService = it.findTokenizableService(BFTNonValidatingNotaryService::class.java)!! notaryService.waitUntilReplicaHasInitialized() } }