[ https://issues.apache.org/jira/browse/HELIX-513?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
John Francis Unson updated HELIX-513: ------------------------------------- Sprint: Scrumban #3 > ZKHelixAdmin#rebalance with group uses instances from other groups > ------------------------------------------------------------------ > > Key: HELIX-513 > URL: https://issues.apache.org/jira/browse/HELIX-513 > Project: Apache Helix > Issue Type: Bug > Components: helix-core > Affects Versions: 0.7.1, 0.6.3 > Reporter: Greg Brandt > > For example, consider a cluster with one instance with tag NOT_YOURS and a > resource whose ideal state has INSTANCE_GROUP_TAG=MINE. If we call > {code} > manager.rebalance("MY_CLUSTER", "MY_RESOURCE", 1, null, "MINE") > {code} > Helix will find no instances with the tag "MINE", so it will instead use all > available instances in the cluster to perform the rebalance. > This has undesirable effects when groups are used for multi-tenant clusters > (i.e. subsets of instances belong to individual tenants, and tenants should > not share instances). > Better behavior might be to error out at the point no tagged instances are > found. > {code} > @Override > public void rebalance(String clusterName, String resourceName, int replica, > String keyPrefix, > String group) { > List<String> instanceNames = new LinkedList<String>(); > if (keyPrefix == null || keyPrefix.length() == 0) { > keyPrefix = resourceName; > } > if (group != null && group.length() > 0) { > instanceNames = getInstancesInClusterWithTag(clusterName, group); > } > if (instanceNames.size() == 0) { > // OLD > //logger.info("No tags found for resource " + resourceName + ", use all > instances"); > //instanceNames = getInstancesInCluster(clusterName); > //group = ""; > // NEW > throw new IllegalStateException("No tags found for resource ..."); > } else { > logger.info("Found instances with tag for " + resourceName + " " + > instanceNames); > } > rebalance(clusterName, resourceName, replica, keyPrefix, instanceNames, > group); > } > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)