/** * Get a map of member to the GC version of that member, including the local member. */ public synchronized Map<T, Long> getMemberToGCVersion() { HashMap<T, Long> results = new HashMap<T, Long>(memberToGCVersion); if (localGCVersion.get() > 0) { results.put(getOwnerId(), localGCVersion.get()); } return results; }
/** * Get a map of the member to the version and exception list for that member, including the local * member. */ public Map<T, RegionVersionHolder<T>> getMemberToVersion() { RegionVersionHolder<T> myExceptions; myExceptions = this.localExceptions.clone(); HashMap<T, RegionVersionHolder<T>> results = new HashMap<T, RegionVersionHolder<T>>(memberToVersion); results.put(getOwnerId(), myExceptions); return results; }
/** * return the next local version number */ private long getNextVersion(boolean checkLocked) { if (checkLocked && this.locked) { // this should never be the case. If version generation is locked and we get here // then the path to this point is not protected by getting the version generation // lock from the RVV but it should be if (logger.isDebugEnabled()) { logger.debug("Generating a version tag when version generation is locked by {}", this.lockOwner); } } long new_version = localVersion.incrementAndGet(); // since there could be special exception, we have to use recordVersion() recordVersion(getOwnerId(), new_version); return new_version; }
if (!mbr.equals(other.getOwnerId())) { return true;
Long gcVersion = entry.getValue(); RegionVersionHolder<T> otherHolder = null; if (mbr.equals(requesterRVV.getOwnerId())) { otherHolder = requesterRVV.localExceptions; } else {
return true; } else if (mbr.equals(other.getOwnerId())) { if (holder.isNewerThanOrCanFillExceptionsFor(other.localExceptions)) { return true;
initializeVersionHolder(otherVector.getOwnerId(), otherVector.localExceptions); && !this.memberToVersion.containsKey(otherVector.getOwnerId())) { recordVersion(otherVector.getOwnerId(), otherVector.getCurrentVersion()); && !mbr.equals(otherVector.getOwnerId())) { RegionVersionHolder holder = this.memberToVersion.get(mbr); initializeVersionHolder(mbr, new RegionVersionHolder(0)); && !myId.equals(otherVector.getOwnerId())) { initializeVersionHolder(myId, new RegionVersionHolder(0));
updateDiskGCRVV(diskRVV, inMemoryRVV, diskRVV.getOwnerId()); for (VersionSource member : (Collection<VersionSource>) inMemoryRVV.getMemberToGCVersion() .keySet()) {
rvv.recordVersion(rvv.getOwnerId(), nextRegionVersion); if (logger.isDebugEnabled()) { logger.debug("recorded region version {}; region={}", nextRegionVersion,
RegionVersionVector singletonRVV = rv1.getCloneForTransmission(server2); assertTrue(singletonRVV.isForSynchronization()); assertEquals(singletonRVV.getOwnerId(), server1); assertTrue(singletonRVV.getMemberToVersion().containsKey(server2)); assertFalse(singletonRVV.getMemberToVersion().containsKey(server3));