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),
|
||||
rememberEntitiesStoreMode = RememberEntitiesStoreMode.byName(classicSettings.rememberEntitiesStore),
|
||||
new TuningParameters(classicSettings.tuningParameters),
|
||||
classicSettings.coordinatorSingletonOverrideRole,
|
||||
new ClusterSingletonManagerSettings(
|
||||
classicSettings.coordinatorSingletonSettings.singletonName,
|
||||
classicSettings.coordinatorSingletonSettings.role,
|
||||
|
|
@ -98,6 +99,7 @@ object ClusterShardingSettings {
|
|||
coordinatorStateReadMajorityPlus = settings.tuningParameters.coordinatorStateReadMajorityPlus,
|
||||
leastShardAllocationAbsoluteLimit = settings.tuningParameters.leastShardAllocationAbsoluteLimit,
|
||||
leastShardAllocationRelativeLimit = settings.tuningParameters.leastShardAllocationRelativeLimit),
|
||||
coordinatorSingletonOverrideRole = settings.coordinatorSingletonOverrideRole,
|
||||
new ClassicClusterSingletonManagerSettings(
|
||||
settings.coordinatorSingletonSettings.singletonName,
|
||||
settings.coordinatorSingletonSettings.role,
|
||||
|
|
@ -821,9 +823,41 @@ final class ClusterShardingSettings(
|
|||
val stateStoreMode: ClusterShardingSettings.StateStoreMode,
|
||||
val rememberEntitiesStoreMode: ClusterShardingSettings.RememberEntitiesStoreMode,
|
||||
val tuningParameters: ClusterShardingSettings.TuningParameters,
|
||||
val coordinatorSingletonOverrideRole: Boolean,
|
||||
val coordinatorSingletonSettings: ClusterSingletonManagerSettings,
|
||||
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")
|
||||
def this(
|
||||
numberOfShards: Int,
|
||||
|
|
@ -851,6 +885,7 @@ final class ClusterShardingSettings(
|
|||
stateStoreMode,
|
||||
rememberEntitiesStoreMode,
|
||||
tuningParameters,
|
||||
true,
|
||||
coordinatorSingletonSettings,
|
||||
leaseSettings)
|
||||
|
||||
|
|
@ -995,6 +1030,7 @@ final class ClusterShardingSettings(
|
|||
stateStoreMode: ClusterShardingSettings.StateStoreMode = stateStoreMode,
|
||||
rememberEntitiesStoreMode: ClusterShardingSettings.RememberEntitiesStoreMode = rememberEntitiesStoreMode,
|
||||
tuningParameters: ClusterShardingSettings.TuningParameters = tuningParameters,
|
||||
coordinatorSingletonOverrideRole: Boolean = coordinatorSingletonOverrideRole,
|
||||
coordinatorSingletonSettings: ClusterSingletonManagerSettings = coordinatorSingletonSettings,
|
||||
passivationStrategySettings: ClusterShardingSettings.PassivationStrategySettings = passivationStrategySettings,
|
||||
shardRegionQueryTimeout: FiniteDuration = shardRegionQueryTimeout,
|
||||
|
|
@ -1011,6 +1047,7 @@ final class ClusterShardingSettings(
|
|||
stateStoreMode,
|
||||
rememberEntitiesStoreMode,
|
||||
tuningParameters,
|
||||
coordinatorSingletonOverrideRole,
|
||||
coordinatorSingletonSettings,
|
||||
leaseSettings)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -150,6 +150,7 @@ private[akka] final class ShardedDaemonProcessImpl(system: ActorSystem[_])
|
|||
StateStoreModeDData,
|
||||
RememberEntitiesStoreModeDData, // not used as remembered entities is off
|
||||
shardingBaseSettings.tuningParameters,
|
||||
shardingBaseSettings.coordinatorSingletonOverrideRole,
|
||||
shardingBaseSettings.coordinatorSingletonSettings,
|
||||
shardingBaseSettings.leaseSettings)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -358,10 +358,17 @@ akka.cluster.sharding {
|
|||
|
||||
# Settings for the coordinator singleton. Same layout as akka.cluster.singleton.
|
||||
# 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
|
||||
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 {
|
||||
# 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
|
||||
|
|
|
|||
|
|
@ -805,7 +805,13 @@ private[akka] class ClusterShardingGuardian extends Actor {
|
|||
.withFinalStopMessage(_ == ShardCoordinator.Internal.Terminate)
|
||||
.props
|
||||
.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(
|
||||
ClusterSingletonManager
|
||||
.props(singletonProps, terminationMessage = ShardCoordinator.Internal.Terminate, singletonSettings)
|
||||
|
|
|
|||
|
|
@ -107,6 +107,7 @@ object ClusterShardingSettings {
|
|||
passivationStrategySettings = passivationStrategySettings,
|
||||
shardRegionQueryTimeout = config.getDuration("shard-region-query-timeout", MILLISECONDS).millis,
|
||||
tuningParameters,
|
||||
config.getBoolean("coordinator-singleton-role-override"),
|
||||
coordinatorSingletonSettings,
|
||||
lease)
|
||||
}
|
||||
|
|
@ -1122,9 +1123,38 @@ final class ClusterShardingSettings(
|
|||
val passivationStrategySettings: ClusterShardingSettings.PassivationStrategySettings,
|
||||
val shardRegionQueryTimeout: FiniteDuration,
|
||||
val tuningParameters: ClusterShardingSettings.TuningParameters,
|
||||
val coordinatorSingletonOverrideRole: Boolean,
|
||||
val coordinatorSingletonSettings: ClusterSingletonManagerSettings,
|
||||
val leaseSettings: Option[LeaseUsageSettings])
|
||||
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(
|
||||
"Use the ClusterShardingSettings factory methods or the constructor including passivationStrategySettings instead",
|
||||
|
|
@ -1151,6 +1181,7 @@ final class ClusterShardingSettings(
|
|||
ClusterShardingSettings.PassivationStrategySettings.oldDefault(passivateIdleEntityAfter),
|
||||
shardRegionQueryTimeout,
|
||||
tuningParameters,
|
||||
true,
|
||||
coordinatorSingletonSettings,
|
||||
leaseSettings)
|
||||
|
||||
|
|
@ -1335,6 +1366,7 @@ final class ClusterShardingSettings(
|
|||
passivationStrategySettings: ClusterShardingSettings.PassivationStrategySettings = passivationStrategySettings,
|
||||
shardRegionQueryTimeout: FiniteDuration = shardRegionQueryTimeout,
|
||||
tuningParameters: ClusterShardingSettings.TuningParameters = tuningParameters,
|
||||
coordinatorSingletonOverrideRole: Boolean = coordinatorSingletonOverrideRole,
|
||||
coordinatorSingletonSettings: ClusterSingletonManagerSettings = coordinatorSingletonSettings,
|
||||
leaseSettings: Option[LeaseUsageSettings] = leaseSettings): ClusterShardingSettings =
|
||||
new ClusterShardingSettings(
|
||||
|
|
@ -1347,6 +1379,7 @@ final class ClusterShardingSettings(
|
|||
passivationStrategySettings,
|
||||
shardRegionQueryTimeout,
|
||||
tuningParameters,
|
||||
coordinatorSingletonOverrideRole,
|
||||
coordinatorSingletonSettings,
|
||||
leaseSettings)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue