private boolean checkSufficientStores(Set<InternalDistributedMember> allStores,
      boolean loggedInsufficientStores) {
    // Report (only once) if insufficient data store have been detected.
    if (!loggedInsufficientStores) {
      if (allStores.isEmpty()) {
        insufficientStores(allStores, emptyList(), true);
        return true;
      }
    } else {
      if (!allStores.isEmpty()) {
        // Excellent, sufficient resources were found!
        logger.info("{} Region name, {}", SUFFICIENT_STORES_MSG, partitionedRegion.getFullPath());
        return false;
      }
      // Already logged warning, there are no datastores
      insufficientStores(allStores, emptyList(), false);
    }
    return loggedInsufficientStores;
  }
Check to determine that there are enough datastore VMs to start the bucket creation processes.
Log a warning or throw an exception indicating when there are not enough datastore VMs.

@param allStores All known data store instances (including local)
@param loggedInsufficientStores indicates whether a warning has been logged
@return true when a warning has been logged, false if a warning should be logged.
geode-core/src/main/java/org/apache/geode/internal/cache/PRHARedundancyProvider.java