[ 
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)

Reply via email to