public boolean hasValidVersion() { VersionStamp stamp = (VersionStamp) this; return stamp.getRegionVersion() != 0 || stamp.getEntryVersion() != 0; }
byte[] serializeVersionTag(VersionStamp stamp) throws IOException { int entryVersion = stamp.getEntryVersion(); long regionVersion = stamp.getRegionVersion(); VersionSource versionMember = stamp.getMemberID(); long timestamp = stamp.getVersionTimeStamp(); int dsId = stamp.getDistributedSystemId(); return serializeVersionTag(entryVersion, regionVersion, versionMember, timestamp, dsId); }
id = myId; if (!remoteRVV.contains(id, stamp.getRegionVersion())) { remoteRVV.recordVersion(id, stamp.getRegionVersion()); "Region:{} found unfinished operation key={},member={},region version={}", region.getFullPath(), mapEntry.getKey(), stamp.getMemberID(), stamp.getRegionVersion());
rvv.recordVersion(id, stamp.getRegionVersion());
@Override public void handleRegionEntry(RegionEntry regionEntry) { DiskEntry de = (DiskEntry) regionEntry; synchronized (de) { DiskId id = de.getDiskId(); if (id != null && regionEntry.isTombstone()) { VersionStamp stamp = regionEntry.getVersionStamp(); if (getRegionVersionVector().isTombstoneTooOld(stamp.getMemberID(), stamp.getRegionVersion())) { drs.destroyRecoveredEntry(de.getKey()); } } } } });
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; }
private boolean shouldClear(LocalRegion r, RegionVersionVector rvv, AsyncDiskEntry ade) { if (ade.region != r) { return false; } // If no RVV, remove all of the async items for this region. if (rvv == null) { return true; } // If we are clearing based on an RVV, only remove // entries contained in the RVV if (ade.versionOnly) { return rvv.contains(ade.tag.getMemberID(), ade.tag.getRegionVersion()); } else { VersionStamp stamp = ade.de.getVersionStamp(); VersionSource member = stamp.getMemberID(); if (member == null) { // For overflow only regions, the version member may be null // because that represents the local internal distributed member member = r.getVersionMember(); } return rvv.contains(member, stamp.getRegionVersion()); } }
if (versionVector.contains(id, stamp.getRegionVersion())) { continue;
id = myId; if (rvv.contains(id, re.getVersionStamp().getRegionVersion())) { if (isTraceEnabled) { logger.trace("region clear op is removing {} {}", re.getKey(),
id = region.getVersionMember(); if (!rvv.contains(id, getVersionStamp().getRegionVersion())) { entryOK = true;
if (rvv != null && entry.getVersionStamp() != null) { rvv.recordVersion(entry.getVersionStamp().getMemberID(), entry.getVersionStamp().getRegionVersion());
if (rvv != null && entry.getVersionStamp() != null) { rvv.recordVersion(entry.getVersionStamp().getMemberID(), entry.getVersionStamp().getRegionVersion());
|| stamp.getRegionVersion() != tag.getRegionVersion())) { DiskEntry.Helper.doAsyncFlush(tag, region);