@Override
    public void execute() {
      boolean result = cache.acquireAutoBalanceLock();
      if (!result) {
        if (logger.isDebugEnabled()) {
          logger.debug(
              "Another member owns auto-balance lock. Skip this attempt to rebalance the cluster");
        }
        return;
      }

      cache.incrementAttemptCounter();
      result = needsRebalancing();
      if (!result) {
        if (logger.isDebugEnabled()) {
          logger.debug("Rebalancing is not needed");
        }
        return;
      }

      cache.rebalance();
    }
Queries member statistics and health to determine if a re-balance operation is needed
<OL>
<LI>acquires distributed lock
<LI>queries member health
<LI>updates auto-balance stat
<LI>release lock
geode-rebalancer/src/main/java/org/apache/geode/cache/util/AutoBalancer.java