From b6b37ad6f41fa6276d14cd7b8b5bb9300e88e609 Mon Sep 17 00:00:00 2001 From: Michele Sollecito Date: Thu, 8 Nov 2018 17:54:09 +0000 Subject: [PATCH] Working on merging changes to NodeConfigurationImpl. --- .../config/EnterpriseConfiguration.kt | 30 +++++++---- .../config/schema/v1/ConfigSections.kt | 52 +++++++++++++++++++ .../schema/v1/V1NodeConfigurationSpec.kt | 4 +- 3 files changed, 75 insertions(+), 11 deletions(-) diff --git a/node/src/main/kotlin/net/corda/node/services/config/EnterpriseConfiguration.kt b/node/src/main/kotlin/net/corda/node/services/config/EnterpriseConfiguration.kt index b81d20e45f..3f1eff1cd1 100644 --- a/node/src/main/kotlin/net/corda/node/services/config/EnterpriseConfiguration.kt +++ b/node/src/main/kotlin/net/corda/node/services/config/EnterpriseConfiguration.kt @@ -8,22 +8,32 @@ import net.corda.nodeapi.internal.config.ExternalBrokerConnectionConfiguration data class EnterpriseConfiguration( val mutualExclusionConfiguration: MutualExclusionConfiguration, - val externalBrokerConnectionConfiguration: ExternalBrokerConnectionConfiguration = ExternalBrokerConnectionConfiguration.DEFAULT, - val externalBrokerBackupAddresses: List = emptyList(), - val useMultiThreadedSMM: Boolean = true, - val tuning: PerformanceTuning = PerformanceTuning.default, + val externalBrokerConnectionConfiguration: ExternalBrokerConnectionConfiguration = Defaults.externalBrokerConnectionConfiguration, + val externalBrokerBackupAddresses: List = Defaults.externalBrokerBackupAddresses, + val useMultiThreadedSMM: Boolean = Defaults.useMultiThreadedSMM, + val tuning: PerformanceTuning = Defaults.tuning, val externalBridge: Boolean? = null, - val enableCacheTracing: Boolean = false, + val enableCacheTracing: Boolean = Defaults.enableCacheTracing, + val traceTargetDirectory: Path = Defaults.traceTargetDirectory +) { + internal object Defaults { + val externalBrokerConnectionConfiguration: ExternalBrokerConnectionConfiguration = ExternalBrokerConnectionConfiguration.DEFAULT + val externalBrokerBackupAddresses: List = emptyList() + val useMultiThreadedSMM: Boolean = true + val tuning: PerformanceTuning = PerformanceTuning.default + val enableCacheTracing: Boolean = false val traceTargetDirectory: Path = File(".").toPath() -) + } +} -data class MutualExclusionConfiguration(val on: Boolean = false, - val machineName: String = defaultMachineName, +data class MutualExclusionConfiguration(val on: Boolean = Defaults.on, + val machineName: String = Defaults.machineName, val updateInterval: Long, val waitInterval: Long ) { - companion object { - private val defaultMachineName = InetAddress.getLocalHost().hostName + internal object Defaults { + val machineName = InetAddress.getLocalHost().hostName + val on: Boolean = false } } diff --git a/node/src/main/kotlin/net/corda/node/services/config/schema/v1/ConfigSections.kt b/node/src/main/kotlin/net/corda/node/services/config/schema/v1/ConfigSections.kt index 5330f9a591..b26b34c3cf 100644 --- a/node/src/main/kotlin/net/corda/node/services/config/schema/v1/ConfigSections.kt +++ b/node/src/main/kotlin/net/corda/node/services/config/schema/v1/ConfigSections.kt @@ -17,15 +17,18 @@ import net.corda.node.services.config.AuthDataSourceType import net.corda.node.services.config.CertChainPolicyConfig import net.corda.node.services.config.CertChainPolicyType import net.corda.node.services.config.DevModeOptions +import net.corda.node.services.config.EnterpriseConfiguration import net.corda.node.services.config.FlowOverride import net.corda.node.services.config.FlowOverrideConfig import net.corda.node.services.config.FlowTimeoutConfiguration import net.corda.node.services.config.GraphiteOptions +import net.corda.node.services.config.MutualExclusionConfiguration import net.corda.node.services.config.NetworkServicesConfig import net.corda.node.services.config.NodeH2Settings import net.corda.node.services.config.NodeRpcSettings import net.corda.node.services.config.NotaryConfig import net.corda.node.services.config.PasswordEncryption +import net.corda.node.services.config.PerformanceTuning import net.corda.node.services.config.RelayConfiguration import net.corda.node.services.config.SecurityConfiguration import net.corda.node.services.config.SecurityConfiguration.AuthService.Companion.defaultAuthServiceId @@ -40,6 +43,7 @@ import net.corda.node.services.config.schema.parsers.toURL import net.corda.node.services.config.schema.parsers.toUUID import net.corda.node.services.config.schema.parsers.validValue import net.corda.nodeapi.BrokerRpcSslOptions +import net.corda.nodeapi.internal.config.ExternalBrokerConnectionConfiguration import net.corda.nodeapi.internal.config.User import net.corda.nodeapi.internal.persistence.DatabaseConfig import net.corda.nodeapi.internal.persistence.TransactionIsolationLevel @@ -257,9 +261,57 @@ internal object GraphiteOptionsSpec : Configuration.Specification { return valid(GraphiteOptions(configuration[server], configuration[port], configuration[prefix], configuration[sampleInvervallSeconds])) } +} + +internal object EnterpriseConfigurationSpec : Configuration.Specification("EnterpriseConfiguration") { + private val mutualExclusionConfiguration by nested(MutualExclusionConfigurationSpec) + private val externalBrokerConnectionConfiguration by enum(ExternalBrokerConnectionConfiguration::class).optional().withDefaultValue(EnterpriseConfiguration.Defaults.externalBrokerConnectionConfiguration) + private val externalBrokerBackupAddresses by string().mapValid(::toNetworkHostAndPort).list().optional().withDefaultValue(EnterpriseConfiguration.Defaults.externalBrokerBackupAddresses) + private val useMultiThreadedSMM by boolean().optional().withDefaultValue(EnterpriseConfiguration.Defaults.useMultiThreadedSMM) + private val tuning by nested(PerformanceTuningSpec).optional().withDefaultValue(EnterpriseConfiguration.Defaults.tuning) + private val externalBridge by boolean().optional() + private val enableCacheTracing by boolean().optional().withDefaultValue(EnterpriseConfiguration.Defaults.enableCacheTracing) + private val traceTargetDirectory by string().mapValid(::toPath).optional().withDefaultValue(EnterpriseConfiguration.Defaults.traceTargetDirectory) + + override fun parseValid(configuration: Config): Valid { + return valid(EnterpriseConfiguration( + configuration[mutualExclusionConfiguration], + configuration[externalBrokerConnectionConfiguration], + configuration[externalBrokerBackupAddresses], + configuration[useMultiThreadedSMM], + configuration[tuning], + configuration[externalBridge], + configuration[enableCacheTracing], + configuration[traceTargetDirectory]) + ) + } +} + +internal object MutualExclusionConfigurationSpec : Configuration.Specification("MutualExclusionConfiguration") { + private val on by boolean().optional().withDefaultValue(MutualExclusionConfiguration.Defaults.on) + private val machineName by string().optional().withDefaultValue(MutualExclusionConfiguration.Defaults.machineName) + private val updateInterval by long() + private val waitInterval by long() + + override fun parseValid(configuration: Config): Valid { + return valid(MutualExclusionConfiguration(configuration[on], configuration[machineName], configuration[updateInterval], configuration[waitInterval])) + } +} + +internal object PerformanceTuningSpec : Configuration.Specification("PerformanceTuning") { + private val flowThreadPoolSize by int() + private val maximumMessagingBatchSize by int() + private val rpcThreadPoolSize by int() + private val p2pConfirmationWindowSize by int() + private val brokerConnectionTtlCheckIntervalMs by long() + + override fun parseValid(configuration: Config): Valid { + return valid(PerformanceTuning(configuration[flowThreadPoolSize], configuration[maximumMessagingBatchSize], configuration[rpcThreadPoolSize], configuration[p2pConfirmationWindowSize], configuration[brokerConnectionTtlCheckIntervalMs])) + } } \ No newline at end of file diff --git a/node/src/main/kotlin/net/corda/node/services/config/schema/v1/V1NodeConfigurationSpec.kt b/node/src/main/kotlin/net/corda/node/services/config/schema/v1/V1NodeConfigurationSpec.kt index a6be6ded9b..7c0ed9313f 100644 --- a/node/src/main/kotlin/net/corda/node/services/config/schema/v1/V1NodeConfigurationSpec.kt +++ b/node/src/main/kotlin/net/corda/node/services/config/schema/v1/V1NodeConfigurationSpec.kt @@ -82,6 +82,7 @@ internal object V1NodeConfigurationSpec : Configuration.Specification { @@ -141,7 +142,8 @@ internal object V1NodeConfigurationSpec : Configuration.Specification