VersionTag tag = VersionTag.create(memberId); int entryVersion = stamp.getEntryVersion()-1; int dsid = stamp.getDistributedSystemId(); long time = System.currentTimeMillis(); assertEquals( "Time stamp did NOT get updated by UPDATE_VERSION operation on LocalRegion", time, stamp.getVersionTimeStamp()); assertEquals(++entryVersion, stamp.getEntryVersion()); assertEquals(dsid, stamp.getDistributedSystemId()); return stamp.asVersionTag();
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); }
VersionTag stampTag = stamp.asVersionTag(); if (stampTag.hasValidVersion() && checkForConflict) { // only be verbose here if there's a possibility we might reject the operation verbose = new StringBuilder(); verbose.append("processing tag for key " + getKey() + ", stamp=" + stamp.asVersionTag() + ", tag=").append(tag) .append(", checkForConflict=").append(checkForConflict); //.append(", current value=").append(_getValue()); && stamp.getDistributedSystemId() == tag.getDistributedSystemId() && tag.getVersionTimeStamp() > stamp.getVersionTimeStamp()) { stamp.setVersionTimeStamp(tag.getVersionTimeStamp()); tag.setTimeStampApplied(true); if (verbose != null) {
public final boolean hasValidVersion() { VersionStamp stamp = (VersionStamp)this; boolean has = stamp.getRegionVersion() != 0 || stamp.getEntryVersion() != 0; return has; }
protected StringBuilder appendFieldsToString(final StringBuilder sb) { sb.append("key=").append(getKey()).append("; rawValue=") .append(_getValue()); // OFFHEAP _getValue ok: the current toString on OffHeapCachedDeserializable is safe to use without incing refcount. VersionStamp stamp = getVersionStamp(); if (stamp != null) { sb.append("; version=").append(stamp.asVersionTag()+";member="+stamp.getMemberID()); } return sb; }
VersionStamp stamp = this.getVersionStamp(); if (stamp != null && region.getServerProxy() == null) { // clients do not generate versions int v = stamp.getEntryVersion()+1; if (v > 0xFFFFFF) { v -= 0x1000000; // roll-over VersionSource previous = stamp.getMemberID(); if (time <= stamp.getVersionTimeStamp() && dsid != tag.getDistributedSystemId()) { time = stamp.getVersionTimeStamp() + 1; stamp.setVersions(tag); stamp.setMemberID(mbr); event.setVersionTag(tag); return tag;
public void run() { Cache cache = getCache(); LocalRegion region = (LocalRegion) cache.getRegion(REGION_NAME); region.put(0, "value3"); RegionEntry entry = region.getRegionEntry(0); entry = region.getRegionEntry(0); //Sneak in and change the version number for an entry to generate //a conflict. VersionTag tag = entry.getVersionStamp().asVersionTag(); tag.setEntryVersion(tag.getEntryVersion() - 2); entry.getVersionStamp().setVersions(tag); } };
public void handleRegionEntry(RegionEntry re) { DiskEntry de = (DiskEntry)re; synchronized (de) { DiskId id = de.getDiskId(); if (id != null && re.isTombstone()) { VersionStamp stamp = re.getVersionStamp(); if(getRegionVersionVector().isTombstoneTooOld(stamp.getMemberID(), stamp.getRegionVersion())) { drs.destroyRecoveredEntry(de.getKeyCopy()); } } } } });
protected void copyRecoveredEntry(RegionEntry oldRe, RegionEntry newRe) { if(newRe.getVersionStamp() != null) { newRe.getVersionStamp().setMemberID(oldRe.getVersionStamp().getMemberID()); newRe.getVersionStamp().setVersions(oldRe.getVersionStamp().asVersionTag()); } if (newRe instanceof AbstractOplogDiskRegionEntry) { ((AbstractOplogDiskRegionEntry)newRe).setDiskId(oldRe); _getOwner().getDiskRegion().replaceIncompatibleEntry((DiskEntry) oldRe, (DiskEntry) newRe); } _getMap().put(newRe.getKey(), newRe); }
int stampDsId = stamp.getDistributedSystemId(); int tagDsId = tag.getDistributedSystemId(); if (logger.isTraceEnabled(LogMarker.TOMBSTONE)) { verbose = new StringBuilder(); verbose.append("processing tag for key " + getKey() + ", stamp=" + stamp.asVersionTag() + ", tag=").append(tag); long stampTime = stamp.getVersionTimeStamp(); long tagTime = tag.getVersionTimeStamp(); if (stampTime > 0 && (tagTime > stampTime || (tagTime == stampTime && tag.getDistributedSystemId() >= stamp.getDistributedSystemId()))) { if (verbose != null) { verbose.append(" - allowing event");
originalStamp = committed.getVersionStamp(); stamp = uncommitted.getVersionStamp(); if (stamp.getEntryVersion() > originalStamp.getEntryVersion() + 1) { originalStampAsTag = originalStamp.asVersionTag(); stamp.setVersions(originalStampAsTag); stamp.setMemberID(originalStampAsTag.getMemberID()); asVersionTag().getMemberID()); event.setVersionTag(originalStampAsTag); event.setRegion(region);
InternalDistributedMember sender, StringBuilder verbose) { int stampVersion = stamp.getEntryVersion(); int tagVersion = tag.getEntryVersion(); boolean apply = false; if (stamp.getVersionTimeStamp() != 0) { // new entries have no timestamp if (tagVersion > 0 && isExpiredTombstone(region, tag.getVersionTimeStamp(), isTombstoneFromGII) && tag.getVersionTimeStamp() > stamp.getVersionTimeStamp()) { } else { VersionSource stampID = stamp.getMemberID(); if (stampID == null) { stampID = dmId;
public VersionTag getVersionTag() { VersionStamp stamp = regionEntry.getVersionStamp(); if (stamp != null) { return stamp.asVersionTag(); } return null; }
public void run() { RegionEntry entry = CCRegion.getRegionEntry("cckey0"); assertTrue(entry.getVersionStamp().getEntryVersion() == 1); } });
long stampTime = getVersionStamp().getVersionTimeStamp(); long tagTime = tag.getVersionTimeStamp(); int stampDsid = getVersionStamp().getDistributedSystemId(); int tagDsid = tag.getDistributedSystemId(); if (isDebugEnabled) {
public void run() { // make the entry for cckey0 a tombstone in this VM and set its modification time to be older // than the tombstone GC interval. This means it could be in the process of being reaped by // distributed-GC RegionEntry entry = CCRegion.getRegionEntry("cckey0"); VersionTag tag = entry.getVersionStamp().asVersionTag(); assertTrue(tag.getEntryVersion() > 1); tag.setVersionTimeStamp(System.currentTimeMillis() - TombstoneService.REPLICATED_TOMBSTONE_TIMEOUT - 1000); entry.getVersionStamp().setVersionTimeStamp(tag.getVersionTimeStamp()); try { entry.makeTombstone(CCRegion, tag); } catch (RegionClearedException e) { fail("region was mysteriously cleared during unit testing", e); } } });
VersionTag originalStampAsTag = null; if (originalStamp != null) { originalStampAsTag = originalStamp.asVersionTag(); stamp.setVersions(originalStampAsTag); stamp.setMemberID(originalStampAsTag.getMemberID());
private void applyVersionTag(LocalRegion region, VersionStamp stamp, VersionTag tag, InternalDistributedMember sender) { // stamp.setPreviousMemberID(stamp.getMemberID()); VersionSource mbr = tag.getMemberID(); if (mbr == null) { mbr = sender; } mbr = region.getVersionVector().getCanonicalId(mbr); tag.setMemberID(mbr); stamp.setVersions(tag); if (tag.hasPreviousMemberID()) { if (tag.getPreviousMemberID() == null) { tag.setPreviousMemberID(stamp.getMemberID()); } else { tag.setPreviousMemberID(region.getVersionVector().getCanonicalId( tag.getPreviousMemberID())); } } }
isPresent = true; VersionStamp stamp = entry.getVersionStamp(); if (stamp != null && stamp.hasValidVersion()) { tag = stamp.asVersionTag();
stamp.processVersionTag(event); v = stamp.asVersionTag(); event.setVersionTag(v);