public synchronized void updateCurrentServingInstance() { synchronized (_currentServingInstance) { Map<String, InstanceTopicPartitionHolder> instanceMap = new HashMap<String, InstanceTopicPartitionHolder>(); Map<String, Set<TopicPartition>> instanceToTopicPartitionsMap = HelixUtils.getInstanceToTopicPartitionsMap(_helixZkManager); List<String> liveInstances = HelixUtils.liveInstances(_helixZkManager); for (String instanceName : liveInstances) { InstanceTopicPartitionHolder instance = new InstanceTopicPartitionHolder(instanceName); instanceMap.put(instanceName, instance); } for (String instanceName : instanceToTopicPartitionsMap.keySet()) { if (instanceMap.containsKey(instanceName)) { instanceMap.get(instanceName) .addTopicPartitions(instanceToTopicPartitionsMap.get(instanceName)); } } _currentServingInstance.clear(); _currentServingInstance.addAll(instanceMap.values()); } }
for (String instanceName : instanceToTopicPartitionMap.keySet()) { if (!removedInstances.contains(instanceName)) { InstanceTopicPartitionHolder instance = new InstanceTopicPartitionHolder(instanceName); instance.addTopicPartitions(instanceToTopicPartitionMap.get(instanceName)); orderedSet.add(instance); orderedSet.add(new InstanceTopicPartitionHolder(instanceName));
InstanceTopicPartitionHolder instance = new InstanceTopicPartitionHolder(instanceName); instance.addTopicPartitions(entry.getValue()); instances.add(instance); idleInstances.remove(idleInstanceToAssign); numIdleInstancesToAssign--; InstanceTopicPartitionHolder instance = new InstanceTopicPartitionHolder(idleInstanceToAssign); instance.addTopicPartitions(entry.getValue()); instances.add(instance); break; instances.add(new InstanceTopicPartitionHolder(instanceName)); forced = true; // force to rebalance so as to assign partitions to the idle instances numIdleInstancesToAssign--; instances.add(new InstanceTopicPartitionHolder(ri)); assignmentChanged = true;
for (String instanceName : liveInstances) { if (!blacklistedInstances.contains(instanceName)) { InstanceTopicPartitionHolder instance = new InstanceTopicPartitionHolder(instanceName); instanceMap.put(instanceName, instance);