private boolean beginVolunteering() {
      synchronized (BucketAdvisor.this) {
        if (Thread.currentThread().equals(volunteeringThread)) {
          return true; // this thread is already volunteering or reserved
        }
        if (volunteeringThread != null) {
          // another thread is already volunteering
          return false;
        }
        volunteeringThread = Thread.currentThread();
        boolean changedState = false;
        try {
          if (isAggressive()) {
            changedState = setBecoming();
          } else {
            changedState = setVolunteering();
          }
          return changedState;
        } finally {
          if (!changedState) {
            aggressive = false;
            volunteeringThread = null;
          }
        }
      }
    }
Called from catch blocks in {@link #doVolunteerForPrimary()}. Handles the exception properly
based on advisor settings and shutdown condition.

@param e the RuntimeException that was caught while volunteering
@param loggit true if message should be logged if shutdown condition is not met
geode-core/src/main/java/org/apache/geode/internal/cache/BucketAdvisor.java