private void checkForUnrecordedOperations() {
    final boolean isTraceEnabled = logger.isTraceEnabled();

    // bug #48962 - a change could have been received from a member
    // that the image provider didn't see. This can happen if the
    // image provider is creating the region in parallel with this member.
    // We have to check all of the received versions for members that
    // left during GII to see if the RVV contains them.
    RegionVersionVector rvv = region.getVersionVector();
    if (region.getConcurrencyChecksEnabled() && rvv != null) {
      ImageState state = region.getImageState();
      if (state.hasLeftMembers()) {
        Set<VersionSource> needsSync = null;
        Set<VersionSource> leftMembers = state.getLeftMembers();
        Iterator<ImageState.VersionTagEntry> tags = state.getVersionTags();
        while (tags.hasNext()) {
          ImageState.VersionTagEntry tag = tags.next();
          if (isTraceEnabled) {
            logger.trace("checkForUnrecordedOperations: processing tag {}", tag);
          }
          if (leftMembers.contains(tag.getMemberID())
              && !rvv.contains(tag.getMemberID(), tag.getRegionVersion())) {
            if (needsSync == null) {
              needsSync = new HashSet<>();
            }
            needsSync.add(tag.getMemberID());
            rvv.recordVersion(tag.getMemberID(), tag.getRegionVersion());
          }
        }
        if (needsSync != null) {
          // we need to tell the image provider to request syncs on the given
          // member(s) These will either be DistributedMember IDs or DiskStore IDs
          RequestSyncMessage msg = new RequestSyncMessage();
          msg.regionPath = region.getFullPath();
          msg.lostVersionSources = needsSync.toArray(new VersionSource[0]);
          Set<InternalDistributedMember> recipients =
              region.getCacheDistributionAdvisor().adviseReplicates();
          if (!recipients.isEmpty()) {
            msg.setRecipients(recipients);
            if (logger.isDebugEnabled()) {
              logger.debug("Local versions were found that the image provider has not seen for {}",
                  needsSync);
            }
            region.getDistributionManager().putOutgoing(msg);
          }
        }
      }
    }
  }
synchronize with another member (delta GII from it). If lostMember is not null, then only
changes that it made to the image provider will be sent back. Otherwise all changes made to the
image provider will be compared with those made to this cache and a full delta will be sent.
geode-core/src/main/java/org/apache/geode/internal/cache/InitialImageOperation.java