From 13d25a1023b4d6bb269e55ea280bb22258776692 Mon Sep 17 00:00:00 2001 From: Jordan Halterman Date: Tue, 1 Aug 2017 18:08:38 -0700 Subject: [PATCH] Change ConsistentMap key hasher to use sha256 Change-Id: Ia83322cc314b178dd438a4c7a05e7ab3bac4ad3d --- .../impl/FederatedDistributedPrimitiveCreator.java | 4 +--- .../store/primitives/impl/TransactionManager.java | 5 ++++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/FederatedDistributedPrimitiveCreator.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/FederatedDistributedPrimitiveCreator.java index 22a59d744a..212c150b3b 100644 --- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/FederatedDistributedPrimitiveCreator.java +++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/FederatedDistributedPrimitiveCreator.java @@ -20,7 +20,6 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; -import com.google.common.hash.HashFunction; import com.google.common.hash.Hashing; import org.onlab.util.HexString; import org.onosproject.cluster.PartitionId; @@ -66,9 +65,8 @@ public class FederatedDistributedPrimitiveCreator implements DistributedPrimitiv Map> maps = Maps.transformValues(members, partition -> partition.newAsyncConsistentMap(name, null)); - HashFunction hashFunction = Hashing.goodFastHash(32); Hasher hasher = key -> { - int hashCode = hashFunction.hashUnencodedChars(key).asInt(); + int hashCode = Hashing.sha256().hashString(key, Charsets.UTF_8).asInt(); return sortedMemberPartitionIds.get(Math.abs(hashCode) % members.size()); }; AsyncConsistentMap partitionedMap = new PartitionedAsyncConsistentMap<>(name, maps, hasher); diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/TransactionManager.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/TransactionManager.java index 223cfec08a..803c1c72f6 100644 --- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/TransactionManager.java +++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/TransactionManager.java @@ -23,12 +23,14 @@ import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; +import com.google.common.base.Charsets; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.hash.Hashing; import com.google.common.util.concurrent.Futures; +import org.onlab.util.HexString; import org.onosproject.cluster.PartitionId; import org.onosproject.store.primitives.MapUpdate; import org.onosproject.store.primitives.PartitionService; @@ -101,7 +103,8 @@ public class TransactionManager { } Hasher hasher = key -> { - int hashCode = Hashing.sha256().hashBytes(serializer.encode(key)).asInt(); + int hashCode = Hashing.sha256() + .hashString(HexString.toHexString(serializer.encode(key)), Charsets.UTF_8).asInt(); return sortedPartitions.get(Math.abs(hashCode) % sortedPartitions.size()); }; return new PartitionedTransactionalMap<>(partitions, hasher);