Merge pull request #25542 from akka/wip-25034-abs-patriknw
fix negative math.abs in Sharding Typed, #25034
This commit is contained in:
commit
1f31024144
2 changed files with 5 additions and 2 deletions
|
|
@ -81,7 +81,7 @@ final class HashCodeMessageExtractor[A](
|
||||||
extends ShardingMessageExtractor[ShardingEnvelope[A], A] {
|
extends ShardingMessageExtractor[ShardingEnvelope[A], A] {
|
||||||
|
|
||||||
override def entityId(envelope: ShardingEnvelope[A]): String = envelope.entityId
|
override def entityId(envelope: ShardingEnvelope[A]): String = envelope.entityId
|
||||||
override def shardId(entityId: String): String = (math.abs(entityId.hashCode) % maxNumberOfShards).toString
|
override def shardId(entityId: String): String = math.abs(entityId.hashCode % maxNumberOfShards).toString
|
||||||
override def unwrapMessage(envelope: ShardingEnvelope[A]): A = envelope.message
|
override def unwrapMessage(envelope: ShardingEnvelope[A]): A = envelope.message
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -98,7 +98,7 @@ abstract class HashCodeNoEnvelopeMessageExtractor[A](
|
||||||
override val handOffStopMessage: A)
|
override val handOffStopMessage: A)
|
||||||
extends ShardingMessageExtractor[A, A] {
|
extends ShardingMessageExtractor[A, A] {
|
||||||
|
|
||||||
override def shardId(entityId: String): String = (math.abs(entityId.hashCode) % maxNumberOfShards).toString
|
override def shardId(entityId: String): String = math.abs(entityId.hashCode % maxNumberOfShards).toString
|
||||||
override final def unwrapMessage(message: A): A = message
|
override final def unwrapMessage(message: A): A = message
|
||||||
|
|
||||||
override def toString = s"HashCodeNoEnvelopeMessageExtractor($maxNumberOfShards)"
|
override def toString = s"HashCodeNoEnvelopeMessageExtractor($maxNumberOfShards)"
|
||||||
|
|
|
||||||
|
|
@ -134,6 +134,9 @@ object ShardRegion {
|
||||||
case ShardRegion.StartEntity(id) ⇒ id
|
case ShardRegion.StartEntity(id) ⇒ id
|
||||||
case _ ⇒ entityId(message)
|
case _ ⇒ entityId(message)
|
||||||
}
|
}
|
||||||
|
// It would be better to have abs(id.hashCode % maxNumberOfShards), see issue #25034
|
||||||
|
// but to avoid getting different values when rolling upgrade we keep the old way,
|
||||||
|
// and it doesn't have any serious consequences
|
||||||
(math.abs(id.hashCode) % maxNumberOfShards).toString
|
(math.abs(id.hashCode) % maxNumberOfShards).toString
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue