fix negative math.abs in Sharding Typed, #25034
This commit is contained in:
parent
d5b2aea176
commit
a98191289d
2 changed files with 5 additions and 2 deletions
|
|
@ -81,7 +81,7 @@ final class HashCodeMessageExtractor[A](
|
|||
extends ShardingMessageExtractor[ShardingEnvelope[A], A] {
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
|
|
@ -98,7 +98,7 @@ abstract class HashCodeNoEnvelopeMessageExtractor[A](
|
|||
override val handOffStopMessage: 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 def toString = s"HashCodeNoEnvelopeMessageExtractor($maxNumberOfShards)"
|
||||
|
|
|
|||
|
|
@ -134,6 +134,9 @@ object ShardRegion {
|
|||
case ShardRegion.StartEntity(id) ⇒ id
|
||||
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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue