void repairRVV() {
    RegionVersionVector rvv = getVersionVector();

    if (rvv == null) {
      // No need to do anything.
      return;
    }

    Iterator<RegionEntry> it = getBestIterator(false);
    VersionSource<?> myId = getVersionMember();

    // Iterate over the all of the entries
    while (it.hasNext()) {
      RegionEntry mapEntry = it.next();
      VersionStamp<?> stamp = mapEntry.getVersionStamp();
      VersionSource<?> id = stamp.getMemberID();
      if (id == null) {
        id = myId;
      }

      // Make sure the version is applied to the regions RVV
      rvv.recordVersion(id, stamp.getRegionVersion());
    }
  }
Fix up our RVV by iterating over the entries in the region and making sure they are applied to
the RVV.

If we failed to do a GII, we may have applied the RVV from a remote member. That RVV may not
have seen some of the events in our local RVV. Those entries were supposed to be replaced with
the results of the GII. However, if we failed the GII, those entries may still be in the cache,
but are no longer reflected in the local RVV. This method iterates over those keys and makes
sure their versions are applied to the local RVV.

TODO - this method should probably rebuild the RVV from scratch, instead of starting with the
existing RVV. By starting with the existing RVV, we may claim to have entries that we actually
don't have. Unfortunately, we can't really rebuild the RVV from scratch because we will end up
with huge exception lists.

However, if we are in the state of recovering from disk with an untrusted RVV, we must be newer
than any other surviving members. So they shouldn't have any entries in their cache that match
entries that we failed to receive through the GII but are reflected in our current RVV. So it
should be safe to start with the current RVV.
geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java