void volunteerForPrimary() {
      boolean handedOff = false;
      while (!handedOff) {
        getAdvisee().getCancelCriterion().checkCancelInProgress(null);
        boolean interrupted = Thread.interrupted();
        try {
          execute(this::doVolunteerForPrimary);
          handedOff = true;
        } catch (InterruptedException e) {
          interrupted = true;
          getAdvisee().getCancelCriterion().checkCancelInProgress(e);
        } finally {
          if (interrupted) {
            Thread.currentThread().interrupt();
          }
        }
      }
    }
Initiates volunteering for primary. Repeated calls are harmless. Invoked by the
BucketAdvisor. Caller must be synchronized on BucketAdvisor.
geode-core/src/main/java/org/apache/geode/internal/cache/BucketAdvisor.java