private void verifyHasPartitions(Set<Integer> targetPartitions) { if (targetPartitions.isEmpty()) { Map<Member, Integer> partitionsPerMember = new HashMap<Member, Integer>(); for (Partition partition : partitionService.getPartitions()) { Member owner = partition.getOwner(); if (owner == null) { throw new IllegalStateException("Owner is null for partition: " + partition); } Integer value = partitionsPerMember.get(owner); Integer result = value == null ? 1 : value + 1; partitionsPerMember.put(owner, result); } throw new IllegalStateException("No partitions found, partitionsPerMember: " + partitionsPerMember); } }
private void initLocal(Set<Partition> partitions) { addrToPartitions = partitions.stream() .collect(groupingBy(p -> p.getOwner().getAddress(), mapping(Partition::getPartitionId, toList()))); }
@Override public boolean apply(Map.Entry<K, V> mapEntry) { if (member.equals(partService.getPartition(mapEntry.getKey()).getOwner())) { return predicate.apply(mapEntry); } return false; }
public static String getPartitionDistributionInformation(HazelcastInstance hz) { Map<Member, Integer> partitionCountMap = new HashMap<Member, Integer>(); int totalPartitions = 0; for (Partition partition : hz.getPartitionService().getPartitions()) { totalPartitions++; Member member = partition.getOwner(); Integer count = partitionCountMap.get(member); if (count == null) { count = 0; } count++; partitionCountMap.put(member, count); } StringBuilder sb = new StringBuilder(); sb.append("total partitions: ").append(totalPartitions).append(NEW_LINE); for (Map.Entry<Member, Integer> entry : partitionCountMap.entrySet()) { Member member = entry.getKey(); long count = entry.getValue(); double percentage = count * 100d / totalPartitions; sb.append(member).append(" total: ").append(count) .append(" percentage: ").append(percentage).append('%').append(NEW_LINE); } return sb.toString(); }
public static String getPartitionDistributionInformation(HazelcastInstance hz) { Map<Member, Integer> partitionCountMap = new HashMap<Member, Integer>(); int totalPartitions = 0; for (Partition partition : hz.getPartitionService().getPartitions()) { totalPartitions++; Member member = partition.getOwner(); Integer count = partitionCountMap.get(member); if (count == null) { count = 0; } count++; partitionCountMap.put(member, count); } StringBuilder sb = new StringBuilder(); sb.append("total partitions: ").append(totalPartitions).append(NEW_LINE); for (Map.Entry<Member, Integer> entry : partitionCountMap.entrySet()) { Member member = entry.getKey(); long count = entry.getValue(); double percentage = count * 100d / totalPartitions; sb.append(member).append(" total: ").append(count) .append(" percentage: ").append(percentage).append('%').append(NEW_LINE); } return sb.toString(); }
public static void warmupPartitions(HazelcastInstance hazelcastInstance) { LOGGER.info("Waiting for partition warmup"); PartitionService partitionService = hazelcastInstance.getPartitionService(); long started = System.nanoTime(); for (Partition partition : partitionService.getPartitions()) { if (System.nanoTime() - started > PARTITION_WARMUP_TIMEOUT_NANOS) { throw new IllegalStateException("Partition warmup timeout. Partitions didn't get an owner in time"); } while (partition.getOwner() == null) { LOGGER.debug("Partition owner is not yet set for partitionId: " + partition.getPartitionId()); sleepMillisThrowException(PARTITION_WARMUP_SLEEP_INTERVAL_MILLIS); } } LOGGER.info("Partitions are warmed up successfully"); }
private static boolean isLocalKey(HazelcastInstance instance, String key) { PartitionService partitionService = instance.getPartitionService(); Partition partition = partitionService.getPartition(key); Member owner = partition.getOwner(); return owner.equals(instance.getLocalEndpoint()); }
@Override public void init(@Nonnull Context context) { addrToPartitions = context.jetInstance().getHazelcastInstance().getPartitionService().getPartitions() .stream() .collect(groupingBy(p -> p.getOwner().getAddress(), mapping(Partition::getPartitionId, toList()))); }
protected void handlePartitions(String[] args) { Set<Partition> partitions = hazelcast.getPartitionService().getPartitions(); Map<Member, Integer> partitionCounts = new HashMap<Member, Integer>(); for (Partition partition : partitions) { Member owner = partition.getOwner(); if (owner != null) { Integer count = partitionCounts.get(owner); int newCount = 1; if (count != null) { newCount = count + 1; } partitionCounts.put(owner, newCount); } println(partition); } Set<Map.Entry<Member, Integer>> entries = partitionCounts.entrySet(); for (Map.Entry<Member, Integer> entry : entries) { println(entry.getKey() + ": " + entry.getValue()); } }
protected void handlePartitions(String[] args) { Set<Partition> partitions = hazelcast.getPartitionService().getPartitions(); Map<Member, Integer> partitionCounts = new HashMap<Member, Integer>(); for (Partition partition : partitions) { Member owner = partition.getOwner(); if (owner != null) { Integer count = partitionCounts.get(owner); int newCount = 1; if (count != null) { newCount = count + 1; } partitionCounts.put(owner, newCount); } println(partition); } Set<Map.Entry<Member, Integer>> entries = partitionCounts.entrySet(); for (Map.Entry<Member, Integer> entry : entries) { println(entry.getKey() + ": " + entry.getValue()); } }
protected void handlePartitions(String[] args) { Set<Partition> partitions = hazelcast.getPartitionService().getPartitions(); Map<Member, Integer> partitionCounts = new HashMap<Member, Integer>(); for (Partition partition : partitions) { Member owner = partition.getOwner(); if (owner != null) { Integer count = partitionCounts.get(owner); int newCount = 1; if (count != null) { newCount = count + 1; } partitionCounts.put(owner, newCount); } println(partition); } Set<Entry<Member, Integer>> entries = partitionCounts.entrySet(); for (Entry<Member, Integer> entry : entries) { println(entry.getKey() + ":" + entry.getValue()); } }
public void warmUpPartitions(HazelcastInstance...instances) throws InterruptedException { for (HazelcastInstance instance : instances) { final PartitionService ps = instance.getPartitionService(); for (Partition partition : ps.getPartitions()) { while (partition.getOwner() == null) { Thread.sleep(10); } } } for (int i = 0; i < 100000; i++) { map.get(i); } }
private static void load(boolean load, ExecutorService es, final MultiMap<String, byte[]> map) { if (load) { Member thisMember = INSTANCE.getCluster().getLocalMember(); for (int i = 0; i < entryCount; i++) { final String key = String.valueOf(i); Partition partition = INSTANCE.getPartitionService().getPartition(key); if (thisMember.equals(partition.getOwner())) { es.execute(new Runnable() { public void run() { map.put(key, new byte[valueSize]); } }); } } } }
protected void handlePartitions(String[] args) { Set<Partition> partitions = hazelcast.getPartitionService().getPartitions(); Map<Member, Integer> partitionCounts = new HashMap<Member, Integer>(); for (Partition partition : partitions) { Member owner = partition.getOwner(); if (owner != null) { Integer count = partitionCounts.get(owner); int newCount = 1; if (count != null) { newCount = count + 1; } partitionCounts.put(owner, newCount); } println(partition); } Set<Entry<Member, Integer>> entries = partitionCounts.entrySet(); for (Entry<Member, Integer> entry : entries) { println(entry.getKey() + ":" + entry.getValue()); } }
private String getServiceInfo(DistributedObject obj) { final Partition partition = instance.getPartitionService().getPartition(obj.getPartitionKey()); return String.format("serviceName=%s, partitionId=%d, owner=%s", obj.getServiceName(), partition.getPartitionId(), partition.getOwner()); }
/** * Returns the next {@code long} key owned by the given Hazelcast instance. * * @param instance Hazelcast instance to search next key for * @param lastKey last key to start search from * @return next key owned by given Hazelcast instance */ public static long nextKeyOwnedBy(HazelcastInstance instance, long lastKey) { Member localMember = instance.getCluster().getLocalMember(); PartitionService partitionService = instance.getPartitionService(); while (true) { Partition partition = partitionService.getPartition(lastKey); if (localMember.equals(partition.getOwner())) { return lastKey; } lastKey++; } }
/** * Returns the next {@code long} key owned by the given Hazelcast instance. * * @param instance Hazelcast instance to search next key for * @param lastKey last key to start search from * @return next key owned by given Hazelcast instance */ public static long nextKeyOwnedBy(HazelcastInstance instance, long lastKey) { Member localMember = instance.getCluster().getLocalMember(); PartitionService partitionService = instance.getPartitionService(); while (true) { Partition partition = partitionService.getPartition(lastKey); if (localMember.equals(partition.getOwner())) { return lastKey; } lastKey++; } }
/** * Returns the next {@code long} key owned by the given Hazelcast instance. * * @param instance Hazelcast instance to search next key for * @param lastKey last key to start search from * @return next key owned by given Hazelcast instance */ public static long nextKeyOwnedBy(HazelcastInstance instance, long lastKey) { Member localMember = instance.getCluster().getLocalMember(); PartitionService partitionService = instance.getPartitionService(); while (true) { Partition partition = partitionService.getPartition(lastKey); if (localMember.equals(partition.getOwner())) { return lastKey; } lastKey++; } }
/** * Checks if a key is located on a Hazelcast instance. * * @param instance the HazelcastInstance the key should belong to * @param key the key to check * @return <tt>true</tt> if the key belongs to the Hazelcast instance, <tt>false</tt> otherwise */ public static boolean isLocalKey(HazelcastInstance instance, Object key) { PartitionService partitionService = instance.getPartitionService(); Partition partition = partitionService.getPartition(key); Member owner; while (true) { owner = partition.getOwner(); if (owner != null) { break; } sleepSeconds(1); } return owner.equals(instance.getLocalEndpoint()); }
@Override public void init(@Nonnull Context context) { if (context.localParallelism() != 1) { throw new IllegalArgumentException( "Non-distributed vertex had parallelism of " + context.localParallelism() + ", should be 1"); } String key = StringPartitioningStrategy.getPartitionKey(partitionKey); ownerAddress = context.jetInstance().getHazelcastInstance().getPartitionService() .getPartition(key).getOwner().getAddress(); }