DiskStoreID recover() {
    recoverFromFailedCompaction();
    if (!ifFile.exists()) {
      // nothing to recover
      // Instead of calling randomUUID which uses SecureRandom which can be slow
      // return UUID.randomUUID();
      // create a UUID using the cheaper Random class.
      return new DiskStoreID(UUID.randomUUID());
    }
    DiskStoreID result = null;
    try {
      try (final FileInputStream fis = new FileInputStream(ifFile);
          final CountingDataInputStream dis =
              new CountingDataInputStream(new BufferedInputStream(fis, 8 * 1024),
                  ifFile.length())) {
        DiskInitFileParser parser = new DiskInitFileParser(dis, this);
        result = parser.parse();

        gotEOF = parser.gotEOF();
        nextSeekPosition = dis.getCount();
        if (logger.isTraceEnabled(LogMarker.PERSIST_RECOVERY_VERBOSE)) {
          logger.trace(LogMarker.PERSIST_RECOVERY_VERBOSE, "liveRecordCount={} totalRecordCount={}",
              ifLiveRecordCount, ifTotalRecordCount);
        }
      }
      for (PlaceHolderDiskRegion drv : drMap.values()) {
        if (drv.getMyPersistentID() != null || drv.getMyInitializingID() != null) {
          // Prepare each region we found in the init file for early recovery.
          if (drv.isBucket() || !getDiskStore().getOwnedByRegion()) {
            getDiskStore().getStats().incUncreatedRecoveredRegions(1);
            drv.setRecoveredEntryMap(RegionMapFactory.createVM(drv, getDiskStore(),
                getDiskStore().getInternalRegionArguments()));
            if (!getDiskStore().isOffline()) {
              // schedule it for recovery since we want to recovery region data early now
              getDiskStore().scheduleForRecovery(drv);
            }
            // else if we are validating or offlineCompacting
            // then the scheduleForRecovery is called later in DiskStoreImpl
            // this helps fix bug 42043
          }
        }
      }
    } catch (EOFException ex) {
      // ignore since a partial record write can be caused by a crash
      // throw new
      // DiskAccessException(String.format("Failed to read file during recovery from %s",
      // this.ifFile.getPath()), ex, this.parent);
    } catch (ClassNotFoundException | IOException ex) {
      throw new DiskAccessException(
          String.format("Failed to read file during recovery from %s",
              ifFile.getPath()),
          ex, parent);
    } catch (CancelException e) {
      if (logger.isDebugEnabled()) {
        logger.debug("Oplog::readOplog:Error in recovery as Cache was closed", e);
      }
    } catch (RegionDestroyedException e) {
      if (logger.isDebugEnabled()) {
        logger.debug("Oplog::readOplog:Error in recovery as Region was destroyed", e);
      }
    } catch (IllegalStateException ex) {
      if (!parent.isClosing()) {
        throw ex;
      }
    }
    return result;
  }
Set of members that have been revoked. We keep track of the revoked members so that we can
indicate to the user a member has been revoked, rather is simply conflicting
geode-core/src/main/java/org/apache/geode/internal/cache/DiskInitFile.java