public final 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 final void processVersionTag(LocalRegion r, VersionTag tag,
byte[] serializeVersionTag(VersionTag tag) throws IOException { int entryVersion = tag.getEntryVersion(); long regionVersion = tag.getRegionVersion(); VersionSource versionMember = tag.getMemberID(); long timestamp = tag.getVersionTimeStamp(); int dsId = tag.getDistributedSystemId(); return serializeVersionTag(entryVersion, regionVersion, versionMember, timestamp, dsId); }
/** get rvv internal high byte. Used by region entries for transferring to storage */ public short getRegionVersionHighBytes() { return this.versionTag != null? this.versionTag.getRegionVersionHighBytes() : 0; }
@Override public int compare(VersionTag o1, VersionTag o2) { long result = o1.getRegionVersion() - o2.getRegionVersion(); if(result == 0) { result = o1.getVersionTimeStamp() - o2.getVersionTimeStamp(); } return Long.signum(result); }
public final void setVersions(VersionTag tag) { this.memberID = tag.getMemberID(); int eVersion = tag.getEntryVersion(); this.entryVersionLowBytes = (short)(eVersion & 0xffff); this.entryVersionHighByte = (byte)((eVersion & 0xff0000) >> 16); this.regionVersionHighBytes = tag.getRegionVersionHighBytes(); this.regionVersionLowBytes = tag.getRegionVersionLowBytes(); if (!(tag.isGatewayTag()) && this.distributedSystemId == tag.getDistributedSystemId()) { if (getVersionTimeStamp() <= tag.getVersionTimeStamp()) { setVersionTimeStamp(tag.getVersionTimeStamp()); } else { tag.setVersionTimeStamp(getVersionTimeStamp()); } } else { setVersionTimeStamp(tag.getVersionTimeStamp()); } this.distributedSystemId = (byte)(tag.getDistributedSystemId() & 0xff); } public final void setMemberID(VersionSource memberID) {
public void recordRecoveredVersionTag(VersionTag tag) { this.versionVector.recordVersion(tag.getMemberID(), tag.getRegionVersion(), null); }
protected void compareVersionTags(HashMap<String, VersionTag> map1, HashMap<String, VersionTag> map2) { assertEquals(map1.size(), map2.size()); for (String key: map1.keySet()) { VersionTag tag1 = map1.get(key); VersionTag tag2 = map2.get(key); assertEquals(tag1.getEntryVersion(), tag2.getEntryVersion()); assertEquals(tag1.getRegionVersion(), tag2.getRegionVersion()); assertEquals(tag1.getMemberID(), tag2.getMemberID()); } }
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); } } });
/** * set the versionTag on the newly faulted-in entry */ private void setVersionTag(RegionEntry re, VersionTag versionTag) { if (owner.concurrencyChecksEnabled) { versionTag.setMemberID( owner.getVersionVector().getCanonicalId(versionTag.getMemberID())); VersionStamp versionedRe = (VersionStamp) re; versionedRe.setVersions(versionTag); } }
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 int getEntryVersion() { if (this.versionTag != null) { return this.versionTag.getEntryVersion(); } return 0; }
@Override public Object call() throws Exception { Region n = getCache().getRegion(regionNameNormal); VersionTag localTag = ((LocalRegion)n).getRegionEntry("key") .getVersionStamp().asVersionTag(); assertEquals(tag.getEntryVersion(), localTag.getEntryVersion()); assertEquals(tag.getRegionVersion(), localTag.getRegionVersion()); return null; } });
public VersionSource getMemberID() { if (this.versionTag != null) { return this.versionTag.getMemberID(); } return null; }
public static void verifyTimestampAfterOp(long timestamp, int memberid) { Region region = cache.getRegion("repRegion"); assertEquals(0, region.size()); Region.Entry entry = ((LocalRegion)region).getEntry("testKey", null, true); RegionEntry re = ((EntrySnapshot)entry).getRegionEntry(); assertTrue(re.getValueInVM((LocalRegion) region) instanceof Tombstone); VersionTag tag = re.getVersionStamp().asVersionTag(); assertEquals(timestamp, tag.getVersionTimeStamp()); assertEquals(memberid, tag.getDistributedSystemId()); } }
@Override public long getTimstamp() { return versionTag == null ? timestamp : versionTag.getVersionTimeStamp(); }
public int getDistributedSystemId() { if (this.versionTag != null) { return this.versionTag.getDistributedSystemId(); } return -1; }
public final void setVersions(VersionTag tag) { this.memberID = tag.getMemberID(); int eVersion = tag.getEntryVersion(); this.entryVersionLowBytes = (short)(eVersion & 0xffff); this.entryVersionHighByte = (byte)((eVersion & 0xff0000) >> 16); this.regionVersionHighBytes = tag.getRegionVersionHighBytes(); this.regionVersionLowBytes = tag.getRegionVersionLowBytes(); if (!(tag.isGatewayTag()) && this.distributedSystemId == tag.getDistributedSystemId()) { if (getVersionTimeStamp() <= tag.getVersionTimeStamp()) { setVersionTimeStamp(tag.getVersionTimeStamp()); } else { tag.setVersionTimeStamp(getVersionTimeStamp()); } } else { setVersionTimeStamp(tag.getVersionTimeStamp()); } this.distributedSystemId = (byte)(tag.getDistributedSystemId() & 0xff); } public final void setMemberID(VersionSource memberID) {
public void recordRecoveredVersionTag(VersionTag tag) { this.versionVector.recordVersion(tag.getMemberID(), tag.getRegionVersion()); }
/** * set the versionTag on the newly faulted-in entry */ private void setVersionTag(RegionEntry re, VersionTag versionTag) { if (owner.concurrencyChecksEnabled) { versionTag.setMemberID( owner.getVersionVector().getCanonicalId(versionTag.getMemberID())); VersionStamp versionedRe = (VersionStamp) re; versionedRe.setVersions(versionTag); } }
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); } };