@Override public RVVException changeForm() { // Convert the exception to a bitset exception RVVExceptionB ex = new RVVExceptionB(previousVersion, nextVersion); for (ReceivedVersionsReverseIterator it = this.receivedVersionsReverseIterator(); it .hasNext();) { long next = it.next(); ex.add(next); } return ex; }
private void canonicalizeIDs(VersionTag tag, RegionVersionVector versionVector) { if (tag != null && versionVector != null) { tag.setMemberID(versionVector.getCanonicalId(tag.getMemberID())); if (tag.getPreviousMemberID() != null) { tag.setPreviousMemberID(versionVector.getCanonicalId(tag.getPreviousMemberID())); } } }
/** * return the current version for this member */ public long getCurrentVersion() { synchronized (localExceptions) { syncLocalVersion(); return localExceptions.getVersion(); } }
private VersionTag getVersionTagFromStamp(VersionStamp stamp) { VersionTag tag = VersionTag.create(stamp.getMemberID()); tag.setEntryVersion(stamp.getEntryVersion()); tag.setRegionVersion(stamp.getRegionVersion()); tag.setVersionTimeStamp(stamp.getVersionTimeStamp()); tag.setDistributedSystemId(stamp.getDistributedSystemId()); return tag; }
public VersionTag asVersionTag() { VersionTag tag = VersionTag.create(memberID); tag.setEntryVersion(getEntryVersion()); tag.setRegionVersion(this.regionVersionHighBytes, this.regionVersionLowBytes); tag.setVersionTimeStamp(getVersionTimeStamp()); tag.setDistributedSystemId(this.distributedSystemId); return tag; }
public void recordRecoveredVersionTag(VersionTag tag) { this.versionVector.recordVersion(tag.getMemberID(), tag.getRegionVersion()); }
protected boolean sameAs(RVVExceptionB ex) { if (!super.sameAs(ex)) { return false; } for (ReceivedVersionsReverseIterator it = receivedVersionsReverseIterator(); it.hasNext();) { if (!ex.contains(it.next())) { return false; } } for (ReceivedVersionsReverseIterator it = ex.receivedVersionsReverseIterator(); it.hasNext();) { if (!contains(it.next())) { return false; } } return true; }
/** Use this method to create a new RVVException */ static RVVException createException(long previousVersion, long nextVersion, long initialExceptionCount) { // arbitrary cutoff of 100 bytes to use a treeSet instead of bitSet // But if we are deserializing an exception too many received versions use a // bitset anyway. long delta = nextVersion - previousVersion; if (UseTreeSetsForTesting || (delta > RVV_MAX_BITSET_SPAN && initialExceptionCount * 512 < delta)) { return new RVVExceptionT(previousVersion, nextVersion); } return new RVVExceptionB(previousVersion, nextVersion); }
/** * Creates a version tag of the appropriate type, based on the member id * */ public static VersionTag create(VersionSource memberId) { VersionTag tag; if (memberId instanceof DiskStoreID) { tag = new DiskVersionTag(); } else { tag = new VMVersionTag(); } tag.setMemberID(memberId); return tag; }
public static RegionVersionVector<?> create(VersionSource<?> versionMember, LocalRegion owner) { if (versionMember instanceof DiskStoreID) { return new DiskRegionVersionVector((DiskStoreID) versionMember, owner); } else { return new VMRegionVersionVector((InternalDistributedMember) versionMember, owner); } }
@Override public VersionSource getMemberID() { if (this.versionTag != null) { return this.versionTag.getMemberID(); } return null; }
/** * Construct a region version holder that matches the seen revisions passed in the bit set. * */ private RegionVersionHolder buildHolder(BitSet bs) { // Createa version holder RegionVersionHolder vh = new RegionVersionHolder(member); // Record all of the version in the holder recordVersions(vh, bs); // Make sure the holder looks matches the bitset. compareWithBitSet(bs, vh); return vh; }
@Override public void memberDeparted(DistributionManager distributionManager, final InternalDistributedMember id, boolean crashed) { super.memberDeparted(distributionManager, id, crashed); removeOldMember(id); }
void setSender(InternalDistributedMember sender) { if (this.versionTag != null) { this.versionTag.replaceNullIDs(sender); } }
@Override public boolean equals(Object obj) { if (obj == null || !(obj instanceof RegionVersionHolder)) { return false; } return sameAs((RegionVersionHolder) obj); }
/** * return the next local version number */ public long getNextVersion() { return getNextVersion(true); }
/** merge bit-set exceptions into the regular exceptions list */ private synchronized void mergeBitSet() { if (this.bitSet != null && this.bitSetVersion < this.version) { addBitSetExceptions((int) (this.version - this.bitSetVersion), this.version); } }
@Override boolean compareAndSetVersion(long currentVersion, long newVersion) { super.compareAndSetVersion(currentVersion, newVersion); return false; }