protected void saveReceivedRVV(RegionVersionVector rvv) { assert rvv != null; // Make sure the RVV is at least as current as // the provider's was when the GII began. This ensures that a // concurrent clear() doesn't prevent the new region's RVV from being // initialized and that any vector entries that are no longer represented // by stamps in the region are not lost if (logger.isTraceEnabled(LogMarker.INITIAL_IMAGE_VERBOSE)) { logger.trace(LogMarker.INITIAL_IMAGE_VERBOSE, "Applying received version vector {} to {}", rvv.fullToString(), region.getName()); } // TODO - RVV - Our current RVV might reflect some operations // that are concurrent updates. We want to keep those updates. However // it might also reflect things that we recovered from disk that we are going // to remove. We'll need to remove those from the RVV somehow. region.getVersionVector().recordVersions(rvv); if (region.getDataPolicy().withPersistence()) { region.getDiskRegion().writeRVV(region, false); region.getDiskRegion().writeRVVGC(region); } if (logger.isTraceEnabled(LogMarker.INITIAL_IMAGE_VERBOSE)) { logger.trace(LogMarker.INITIAL_IMAGE_VERBOSE, "version vector is now {}", region.getVersionVector().fullToString()); } }
dr.getRegionVersionVector().recordVersions(sourceRVV); } else {
/** initializes a new version vector for this region */ private RegionVersionVector createVersionVector() { RegionVersionVector regionVersionVector = RegionVersionVector.create(getVersionMember(), this); if (this.getDataPolicy().withPersistence()) { // copy the versions that we have recovered from disk into // the version vector. RegionVersionVector diskVector = diskRegion.getRegionVersionVector(); regionVersionVector.recordVersions(diskVector.getCloneForTransmission()); } else if (!this.getDataPolicy().withStorage()) { // version vectors are currently only necessary in empty regions for // tracking canonical member IDs regionVersionVector.turnOffRecordingForEmptyRegion(); } if (serverRegionProxy != null) { regionVersionVector.setIsClientVector(); } cache.getDistributionManager().addMembershipListener(regionVersionVector); return regionVersionVector; }
RegionVersionVector transmittedVector = (RegionVersionVector) DataSerializer.readObject(in); giiReceiverRVV.recordVersions(transmittedVector);