mirror of
				https://github.com/opennetworkinglab/onos.git
				synced 2025-11-04 02:01:11 +01:00 
			
		
		
		
	Change ConsistentMap key hasher to use sha256
Change-Id: Ia83322cc314b178dd438a4c7a05e7ab3bac4ad3d
This commit is contained in:
		
							parent
							
								
									1583a6f30e
								
							
						
					
					
						commit
						13d25a1023
					
				@ -20,7 +20,6 @@ import com.google.common.collect.ImmutableSet;
 | 
				
			|||||||
import com.google.common.collect.Lists;
 | 
					import com.google.common.collect.Lists;
 | 
				
			||||||
import com.google.common.collect.Maps;
 | 
					import com.google.common.collect.Maps;
 | 
				
			||||||
import com.google.common.collect.Sets;
 | 
					import com.google.common.collect.Sets;
 | 
				
			||||||
import com.google.common.hash.HashFunction;
 | 
					 | 
				
			||||||
import com.google.common.hash.Hashing;
 | 
					import com.google.common.hash.Hashing;
 | 
				
			||||||
import org.onlab.util.HexString;
 | 
					import org.onlab.util.HexString;
 | 
				
			||||||
import org.onosproject.cluster.PartitionId;
 | 
					import org.onosproject.cluster.PartitionId;
 | 
				
			||||||
@ -66,9 +65,8 @@ public class FederatedDistributedPrimitiveCreator implements DistributedPrimitiv
 | 
				
			|||||||
        Map<PartitionId, AsyncConsistentMap<String, byte[]>> maps =
 | 
					        Map<PartitionId, AsyncConsistentMap<String, byte[]>> maps =
 | 
				
			||||||
                Maps.transformValues(members,
 | 
					                Maps.transformValues(members,
 | 
				
			||||||
                                     partition -> partition.newAsyncConsistentMap(name, null));
 | 
					                                     partition -> partition.newAsyncConsistentMap(name, null));
 | 
				
			||||||
        HashFunction hashFunction = Hashing.goodFastHash(32);
 | 
					 | 
				
			||||||
        Hasher<String> hasher = key -> {
 | 
					        Hasher<String> 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());
 | 
					            return sortedMemberPartitionIds.get(Math.abs(hashCode) % members.size());
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
        AsyncConsistentMap<String, byte[]> partitionedMap = new PartitionedAsyncConsistentMap<>(name, maps, hasher);
 | 
					        AsyncConsistentMap<String, byte[]> partitionedMap = new PartitionedAsyncConsistentMap<>(name, maps, hasher);
 | 
				
			||||||
 | 
				
			|||||||
@ -23,12 +23,14 @@ import java.util.Map;
 | 
				
			|||||||
import java.util.concurrent.CompletableFuture;
 | 
					import java.util.concurrent.CompletableFuture;
 | 
				
			||||||
import java.util.concurrent.ExecutionException;
 | 
					import java.util.concurrent.ExecutionException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.google.common.base.Charsets;
 | 
				
			||||||
import com.google.common.cache.Cache;
 | 
					import com.google.common.cache.Cache;
 | 
				
			||||||
import com.google.common.cache.CacheBuilder;
 | 
					import com.google.common.cache.CacheBuilder;
 | 
				
			||||||
import com.google.common.collect.Lists;
 | 
					import com.google.common.collect.Lists;
 | 
				
			||||||
import com.google.common.collect.Maps;
 | 
					import com.google.common.collect.Maps;
 | 
				
			||||||
import com.google.common.hash.Hashing;
 | 
					import com.google.common.hash.Hashing;
 | 
				
			||||||
import com.google.common.util.concurrent.Futures;
 | 
					import com.google.common.util.concurrent.Futures;
 | 
				
			||||||
 | 
					import org.onlab.util.HexString;
 | 
				
			||||||
import org.onosproject.cluster.PartitionId;
 | 
					import org.onosproject.cluster.PartitionId;
 | 
				
			||||||
import org.onosproject.store.primitives.MapUpdate;
 | 
					import org.onosproject.store.primitives.MapUpdate;
 | 
				
			||||||
import org.onosproject.store.primitives.PartitionService;
 | 
					import org.onosproject.store.primitives.PartitionService;
 | 
				
			||||||
@ -101,7 +103,8 @@ public class TransactionManager {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Hasher<K> hasher = key -> {
 | 
					        Hasher<K> 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 sortedPartitions.get(Math.abs(hashCode) % sortedPartitions.size());
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
        return new PartitionedTransactionalMap<>(partitions, hasher);
 | 
					        return new PartitionedTransactionalMap<>(partitions, hasher);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user