enabling shard coordinator to honor the provided role in the configu… (#31487)
* adding constructors for binary backwards compatibility
This commit is contained in:
parent
224873696d
commit
422a5b8dae
5 changed files with 86 additions and 2 deletions
|
|
@ -53,6 +53,7 @@ object ClusterShardingSettings {
|
||||||
stateStoreMode = StateStoreMode.byName(classicSettings.stateStoreMode),
|
stateStoreMode = StateStoreMode.byName(classicSettings.stateStoreMode),
|
||||||
rememberEntitiesStoreMode = RememberEntitiesStoreMode.byName(classicSettings.rememberEntitiesStore),
|
rememberEntitiesStoreMode = RememberEntitiesStoreMode.byName(classicSettings.rememberEntitiesStore),
|
||||||
new TuningParameters(classicSettings.tuningParameters),
|
new TuningParameters(classicSettings.tuningParameters),
|
||||||
|
classicSettings.coordinatorSingletonOverrideRole,
|
||||||
new ClusterSingletonManagerSettings(
|
new ClusterSingletonManagerSettings(
|
||||||
classicSettings.coordinatorSingletonSettings.singletonName,
|
classicSettings.coordinatorSingletonSettings.singletonName,
|
||||||
classicSettings.coordinatorSingletonSettings.role,
|
classicSettings.coordinatorSingletonSettings.role,
|
||||||
|
|
@ -98,6 +99,7 @@ object ClusterShardingSettings {
|
||||||
coordinatorStateReadMajorityPlus = settings.tuningParameters.coordinatorStateReadMajorityPlus,
|
coordinatorStateReadMajorityPlus = settings.tuningParameters.coordinatorStateReadMajorityPlus,
|
||||||
leastShardAllocationAbsoluteLimit = settings.tuningParameters.leastShardAllocationAbsoluteLimit,
|
leastShardAllocationAbsoluteLimit = settings.tuningParameters.leastShardAllocationAbsoluteLimit,
|
||||||
leastShardAllocationRelativeLimit = settings.tuningParameters.leastShardAllocationRelativeLimit),
|
leastShardAllocationRelativeLimit = settings.tuningParameters.leastShardAllocationRelativeLimit),
|
||||||
|
coordinatorSingletonOverrideRole = settings.coordinatorSingletonOverrideRole,
|
||||||
new ClassicClusterSingletonManagerSettings(
|
new ClassicClusterSingletonManagerSettings(
|
||||||
settings.coordinatorSingletonSettings.singletonName,
|
settings.coordinatorSingletonSettings.singletonName,
|
||||||
settings.coordinatorSingletonSettings.role,
|
settings.coordinatorSingletonSettings.role,
|
||||||
|
|
@ -821,9 +823,41 @@ final class ClusterShardingSettings(
|
||||||
val stateStoreMode: ClusterShardingSettings.StateStoreMode,
|
val stateStoreMode: ClusterShardingSettings.StateStoreMode,
|
||||||
val rememberEntitiesStoreMode: ClusterShardingSettings.RememberEntitiesStoreMode,
|
val rememberEntitiesStoreMode: ClusterShardingSettings.RememberEntitiesStoreMode,
|
||||||
val tuningParameters: ClusterShardingSettings.TuningParameters,
|
val tuningParameters: ClusterShardingSettings.TuningParameters,
|
||||||
|
val coordinatorSingletonOverrideRole: Boolean,
|
||||||
val coordinatorSingletonSettings: ClusterSingletonManagerSettings,
|
val coordinatorSingletonSettings: ClusterSingletonManagerSettings,
|
||||||
val leaseSettings: Option[LeaseUsageSettings]) {
|
val leaseSettings: Option[LeaseUsageSettings]) {
|
||||||
|
|
||||||
|
@deprecated("Use constructor with coordinatorSingletonOverrideRole", "2.6.20")
|
||||||
|
def this(
|
||||||
|
numberOfShards: Int,
|
||||||
|
role: Option[String],
|
||||||
|
dataCenter: Option[DataCenter],
|
||||||
|
rememberEntities: Boolean,
|
||||||
|
journalPluginId: String,
|
||||||
|
snapshotPluginId: String,
|
||||||
|
passivationStrategySettings: ClusterShardingSettings.PassivationStrategySettings,
|
||||||
|
shardRegionQueryTimeout: FiniteDuration,
|
||||||
|
stateStoreMode: ClusterShardingSettings.StateStoreMode,
|
||||||
|
rememberEntitiesStoreMode: ClusterShardingSettings.RememberEntitiesStoreMode,
|
||||||
|
tuningParameters: ClusterShardingSettings.TuningParameters,
|
||||||
|
coordinatorSingletonSettings: ClusterSingletonManagerSettings,
|
||||||
|
leaseSettings: Option[LeaseUsageSettings]) =
|
||||||
|
this(
|
||||||
|
numberOfShards,
|
||||||
|
role,
|
||||||
|
dataCenter,
|
||||||
|
rememberEntities,
|
||||||
|
journalPluginId,
|
||||||
|
snapshotPluginId,
|
||||||
|
passivationStrategySettings,
|
||||||
|
shardRegionQueryTimeout,
|
||||||
|
stateStoreMode,
|
||||||
|
rememberEntitiesStoreMode,
|
||||||
|
tuningParameters,
|
||||||
|
true,
|
||||||
|
coordinatorSingletonSettings,
|
||||||
|
leaseSettings)
|
||||||
|
|
||||||
@deprecated("Use constructor with passivationStrategySettings", "2.6.18")
|
@deprecated("Use constructor with passivationStrategySettings", "2.6.18")
|
||||||
def this(
|
def this(
|
||||||
numberOfShards: Int,
|
numberOfShards: Int,
|
||||||
|
|
@ -851,6 +885,7 @@ final class ClusterShardingSettings(
|
||||||
stateStoreMode,
|
stateStoreMode,
|
||||||
rememberEntitiesStoreMode,
|
rememberEntitiesStoreMode,
|
||||||
tuningParameters,
|
tuningParameters,
|
||||||
|
true,
|
||||||
coordinatorSingletonSettings,
|
coordinatorSingletonSettings,
|
||||||
leaseSettings)
|
leaseSettings)
|
||||||
|
|
||||||
|
|
@ -995,6 +1030,7 @@ final class ClusterShardingSettings(
|
||||||
stateStoreMode: ClusterShardingSettings.StateStoreMode = stateStoreMode,
|
stateStoreMode: ClusterShardingSettings.StateStoreMode = stateStoreMode,
|
||||||
rememberEntitiesStoreMode: ClusterShardingSettings.RememberEntitiesStoreMode = rememberEntitiesStoreMode,
|
rememberEntitiesStoreMode: ClusterShardingSettings.RememberEntitiesStoreMode = rememberEntitiesStoreMode,
|
||||||
tuningParameters: ClusterShardingSettings.TuningParameters = tuningParameters,
|
tuningParameters: ClusterShardingSettings.TuningParameters = tuningParameters,
|
||||||
|
coordinatorSingletonOverrideRole: Boolean = coordinatorSingletonOverrideRole,
|
||||||
coordinatorSingletonSettings: ClusterSingletonManagerSettings = coordinatorSingletonSettings,
|
coordinatorSingletonSettings: ClusterSingletonManagerSettings = coordinatorSingletonSettings,
|
||||||
passivationStrategySettings: ClusterShardingSettings.PassivationStrategySettings = passivationStrategySettings,
|
passivationStrategySettings: ClusterShardingSettings.PassivationStrategySettings = passivationStrategySettings,
|
||||||
shardRegionQueryTimeout: FiniteDuration = shardRegionQueryTimeout,
|
shardRegionQueryTimeout: FiniteDuration = shardRegionQueryTimeout,
|
||||||
|
|
@ -1011,6 +1047,7 @@ final class ClusterShardingSettings(
|
||||||
stateStoreMode,
|
stateStoreMode,
|
||||||
rememberEntitiesStoreMode,
|
rememberEntitiesStoreMode,
|
||||||
tuningParameters,
|
tuningParameters,
|
||||||
|
coordinatorSingletonOverrideRole,
|
||||||
coordinatorSingletonSettings,
|
coordinatorSingletonSettings,
|
||||||
leaseSettings)
|
leaseSettings)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -150,6 +150,7 @@ private[akka] final class ShardedDaemonProcessImpl(system: ActorSystem[_])
|
||||||
StateStoreModeDData,
|
StateStoreModeDData,
|
||||||
RememberEntitiesStoreModeDData, // not used as remembered entities is off
|
RememberEntitiesStoreModeDData, // not used as remembered entities is off
|
||||||
shardingBaseSettings.tuningParameters,
|
shardingBaseSettings.tuningParameters,
|
||||||
|
shardingBaseSettings.coordinatorSingletonOverrideRole,
|
||||||
shardingBaseSettings.coordinatorSingletonSettings,
|
shardingBaseSettings.coordinatorSingletonSettings,
|
||||||
shardingBaseSettings.leaseSettings)
|
shardingBaseSettings.leaseSettings)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -358,10 +358,17 @@ akka.cluster.sharding {
|
||||||
|
|
||||||
# Settings for the coordinator singleton. Same layout as akka.cluster.singleton.
|
# Settings for the coordinator singleton. Same layout as akka.cluster.singleton.
|
||||||
# The "role" of the singleton configuration is not used. The singleton role will
|
# The "role" of the singleton configuration is not used. The singleton role will
|
||||||
# be the same as "akka.cluster.sharding.role".
|
# be the same as "akka.cluster.sharding.role" if
|
||||||
|
# "akka.cluster.sharding.coordinator-singleton-role-override" is enabled. Disabling it will allow to
|
||||||
|
# use separate nodes for the shard coordinator and the shards themselves.
|
||||||
# A lease can be configured in these settings for the coordinator singleton
|
# A lease can be configured in these settings for the coordinator singleton
|
||||||
coordinator-singleton = ${akka.cluster.singleton}
|
coordinator-singleton = ${akka.cluster.singleton}
|
||||||
|
|
||||||
|
|
||||||
|
# Copies the role for the coordinator singleton from the shards role instead of using the one provided in the
|
||||||
|
# "akka.cluster.sharding.coordinator-singleton.role"
|
||||||
|
coordinator-singleton-role-override = on
|
||||||
|
|
||||||
coordinator-state {
|
coordinator-state {
|
||||||
# State updates are required to be written to a majority of nodes plus this
|
# State updates are required to be written to a majority of nodes plus this
|
||||||
# number of additional nodes. Can also be set to "all" to require
|
# number of additional nodes. Can also be set to "all" to require
|
||||||
|
|
|
||||||
|
|
@ -805,7 +805,13 @@ private[akka] class ClusterShardingGuardian extends Actor {
|
||||||
.withFinalStopMessage(_ == ShardCoordinator.Internal.Terminate)
|
.withFinalStopMessage(_ == ShardCoordinator.Internal.Terminate)
|
||||||
.props
|
.props
|
||||||
.withDeploy(Deploy.local)
|
.withDeploy(Deploy.local)
|
||||||
val singletonSettings = settings.coordinatorSingletonSettings.withSingletonName("singleton").withRole(role)
|
|
||||||
|
val singletonSettings = if (settings.coordinatorSingletonOverrideRole) {
|
||||||
|
settings.coordinatorSingletonSettings.withSingletonName("singleton").withRole(role)
|
||||||
|
} else {
|
||||||
|
settings.coordinatorSingletonSettings.withSingletonName("singleton")
|
||||||
|
}
|
||||||
|
|
||||||
context.actorOf(
|
context.actorOf(
|
||||||
ClusterSingletonManager
|
ClusterSingletonManager
|
||||||
.props(singletonProps, terminationMessage = ShardCoordinator.Internal.Terminate, singletonSettings)
|
.props(singletonProps, terminationMessage = ShardCoordinator.Internal.Terminate, singletonSettings)
|
||||||
|
|
|
||||||
|
|
@ -107,6 +107,7 @@ object ClusterShardingSettings {
|
||||||
passivationStrategySettings = passivationStrategySettings,
|
passivationStrategySettings = passivationStrategySettings,
|
||||||
shardRegionQueryTimeout = config.getDuration("shard-region-query-timeout", MILLISECONDS).millis,
|
shardRegionQueryTimeout = config.getDuration("shard-region-query-timeout", MILLISECONDS).millis,
|
||||||
tuningParameters,
|
tuningParameters,
|
||||||
|
config.getBoolean("coordinator-singleton-role-override"),
|
||||||
coordinatorSingletonSettings,
|
coordinatorSingletonSettings,
|
||||||
lease)
|
lease)
|
||||||
}
|
}
|
||||||
|
|
@ -1122,9 +1123,38 @@ final class ClusterShardingSettings(
|
||||||
val passivationStrategySettings: ClusterShardingSettings.PassivationStrategySettings,
|
val passivationStrategySettings: ClusterShardingSettings.PassivationStrategySettings,
|
||||||
val shardRegionQueryTimeout: FiniteDuration,
|
val shardRegionQueryTimeout: FiniteDuration,
|
||||||
val tuningParameters: ClusterShardingSettings.TuningParameters,
|
val tuningParameters: ClusterShardingSettings.TuningParameters,
|
||||||
|
val coordinatorSingletonOverrideRole: Boolean,
|
||||||
val coordinatorSingletonSettings: ClusterSingletonManagerSettings,
|
val coordinatorSingletonSettings: ClusterSingletonManagerSettings,
|
||||||
val leaseSettings: Option[LeaseUsageSettings])
|
val leaseSettings: Option[LeaseUsageSettings])
|
||||||
extends NoSerializationVerificationNeeded {
|
extends NoSerializationVerificationNeeded {
|
||||||
|
@deprecated(
|
||||||
|
"Use the ClusterShardingSettings factory methods or the constructor including coordinatorSingletonOverrideRole instead",
|
||||||
|
"2.6.20")
|
||||||
|
def this(
|
||||||
|
role: Option[String],
|
||||||
|
rememberEntities: Boolean,
|
||||||
|
journalPluginId: String,
|
||||||
|
snapshotPluginId: String,
|
||||||
|
stateStoreMode: String,
|
||||||
|
rememberEntitiesStore: String,
|
||||||
|
passivationStrategySettings: ClusterShardingSettings.PassivationStrategySettings,
|
||||||
|
shardRegionQueryTimeout: FiniteDuration,
|
||||||
|
tuningParameters: ClusterShardingSettings.TuningParameters,
|
||||||
|
coordinatorSingletonSettings: ClusterSingletonManagerSettings,
|
||||||
|
leaseSettings: Option[LeaseUsageSettings]) =
|
||||||
|
this(
|
||||||
|
role,
|
||||||
|
rememberEntities,
|
||||||
|
journalPluginId,
|
||||||
|
snapshotPluginId,
|
||||||
|
stateStoreMode,
|
||||||
|
rememberEntitiesStore,
|
||||||
|
passivationStrategySettings,
|
||||||
|
shardRegionQueryTimeout,
|
||||||
|
tuningParameters,
|
||||||
|
true,
|
||||||
|
coordinatorSingletonSettings,
|
||||||
|
leaseSettings)
|
||||||
|
|
||||||
@deprecated(
|
@deprecated(
|
||||||
"Use the ClusterShardingSettings factory methods or the constructor including passivationStrategySettings instead",
|
"Use the ClusterShardingSettings factory methods or the constructor including passivationStrategySettings instead",
|
||||||
|
|
@ -1151,6 +1181,7 @@ final class ClusterShardingSettings(
|
||||||
ClusterShardingSettings.PassivationStrategySettings.oldDefault(passivateIdleEntityAfter),
|
ClusterShardingSettings.PassivationStrategySettings.oldDefault(passivateIdleEntityAfter),
|
||||||
shardRegionQueryTimeout,
|
shardRegionQueryTimeout,
|
||||||
tuningParameters,
|
tuningParameters,
|
||||||
|
true,
|
||||||
coordinatorSingletonSettings,
|
coordinatorSingletonSettings,
|
||||||
leaseSettings)
|
leaseSettings)
|
||||||
|
|
||||||
|
|
@ -1335,6 +1366,7 @@ final class ClusterShardingSettings(
|
||||||
passivationStrategySettings: ClusterShardingSettings.PassivationStrategySettings = passivationStrategySettings,
|
passivationStrategySettings: ClusterShardingSettings.PassivationStrategySettings = passivationStrategySettings,
|
||||||
shardRegionQueryTimeout: FiniteDuration = shardRegionQueryTimeout,
|
shardRegionQueryTimeout: FiniteDuration = shardRegionQueryTimeout,
|
||||||
tuningParameters: ClusterShardingSettings.TuningParameters = tuningParameters,
|
tuningParameters: ClusterShardingSettings.TuningParameters = tuningParameters,
|
||||||
|
coordinatorSingletonOverrideRole: Boolean = coordinatorSingletonOverrideRole,
|
||||||
coordinatorSingletonSettings: ClusterSingletonManagerSettings = coordinatorSingletonSettings,
|
coordinatorSingletonSettings: ClusterSingletonManagerSettings = coordinatorSingletonSettings,
|
||||||
leaseSettings: Option[LeaseUsageSettings] = leaseSettings): ClusterShardingSettings =
|
leaseSettings: Option[LeaseUsageSettings] = leaseSettings): ClusterShardingSettings =
|
||||||
new ClusterShardingSettings(
|
new ClusterShardingSettings(
|
||||||
|
|
@ -1347,6 +1379,7 @@ final class ClusterShardingSettings(
|
||||||
passivationStrategySettings,
|
passivationStrategySettings,
|
||||||
shardRegionQueryTimeout,
|
shardRegionQueryTimeout,
|
||||||
tuningParameters,
|
tuningParameters,
|
||||||
|
coordinatorSingletonOverrideRole,
|
||||||
coordinatorSingletonSettings,
|
coordinatorSingletonSettings,
|
||||||
leaseSettings)
|
leaseSettings)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue