public long getRegionVersion() { if (this.versionTag != null) { return this.versionTag.getRegionVersion(); } return 0; }
public long getRegionVersion() { if (this.versionTag != null) { return this.versionTag.getRegionVersion(); } return 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); }
@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); }
@Override public String toString() { StringBuilder sb = new StringBuilder(50); sb.append("(").append(getKey()).append(","). append(getOldValue()); if (this.bucketId > 0) { sb.append(", b").append(this.bucketId); } if (versionTag != null) { sb.append(",v").append(versionTag.getEntryVersion()).append(",rv="+versionTag.getRegionVersion()); } if (filterRouting != null) { sb.append(", ").append(filterRouting); } sb.append(")"); return sb.toString(); }
@Override public String toString() { StringBuilder sb = new StringBuilder(50); sb.append("(op=").append(getOp()).append(',').append(getKey()).append(","). append(getValue()).append(","). append(getOldValue()); if (this.bucketId > 0) { sb.append(", b").append(this.bucketId); } if (versionTag != null) { sb.append(",v").append(versionTag.getEntryVersion()) .append(",rv=").append(versionTag.getRegionVersion()); } if (filterRouting != null) { sb.append(", ").append(filterRouting); } if (callbackArg != null) { sb.append(",callbackArg=").append(callbackArg); } sb.append(")"); return sb.toString(); }
public void recordRecoveredVersionTag(VersionTag tag) { this.versionVector.recordVersion(tag.getMemberID(), tag.getRegionVersion(), null); }
public void recordRecoveredVersionTag(VersionTag tag) { this.versionVector.recordVersion(tag.getMemberID(), tag.getRegionVersion()); }
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()); } }
@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 void addVersionTag(Object key, VersionTag<?> tag) { this.versionTags.add(new VersionTagEntryImpl(key, tag.getMemberID(), tag.getRegionVersion())); }
public void addVersionTag(Object key, VersionTag<?> tag) { this.versionTags.add(new VersionTagEntryImpl(key, tag.getMemberID(), tag.getRegionVersion())); }
@Override public void recordRecoveredVersionTag(VersionTag tag) { this.versionVector.recordVersion(tag.getMemberID(), tag.getRegionVersion(), null); DiskRegion dr = this.getDiskRegion(); //We also need to update the RVV that represents what we have persisted on disk if(dr != null) { dr.recordRecoveredVersionTag(tag); } }
@Override public void recordRecoveredVersionTag(VersionTag tag) { if(this.concurrencyChecksEnabled) { this.versionVector.recordVersion(tag.getMemberID(), tag.getRegionVersion()); DiskRegion dr = this.getDiskRegion(); //We also need to update the RVV that represents what we have persisted on disk if(dr != null) { dr.recordRecoveredVersionTag(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); }
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); }
@Override public void run() { DistributedRegion dr = (DistributedRegion)getCache().getRegion("region"); EventID eventID = new EventID(new byte[0], 1, 0); EntryEventImpl event = EntryEventImpl.create(dr, Operation.CREATE, "TestObject", "TestValue", null, false, memberID, true, eventID); try { event.setContext(new ClientProxyMembershipID(memberID)); boolean recovered = ((BaseCommand)Put70.getCommand()).recoverVersionTagForRetriedOperation(event); assertTrue("Expected to recover the version for this event ID", recovered); assertEquals("Expected the region version to be 123", 123, event.getVersionTag().getRegionVersion()); } finally { event.release(); } } });
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()); } }
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()); } }
@Override public boolean requiresOneHopForMissingEntry(EntryEventImpl event) { // received from another member - don't use one-hop if (event.isOriginRemote()) { return false; } // local ops aren't distributed if (event.getOperation().isLocal()) { return false; } // if it already has a valid version tag it can go out with a DistributedCacheOperation if (event.getVersionTag() != null && event.getVersionTag().getRegionVersion() > 0) { return false; } // if we're not allowed to generate a version tag we need to send it to someone who can if (!this.generateVersionTag) { return true; } return this.concurrencyChecksEnabled && (this.srp == null) && !isTX() && this.scope.isDistributed() && !this.dataPolicy.withReplication(); }