private boolean overwritingOldTombstone(LocalRegion region, VersionStamp stamp, VersionTag tag, StringBuilder verbose) { // Tombstone GC does not use locking to stop operations when old tombstones // are being removed. Because of this we might get an operation that was applied // in another VM that has just reaped a tombstone and is now using a reset // entry version number. Because of this we check the timestamp on the current // local entry and see if it is old enough to have expired. If this is the case // we accept the change and allow the tag to be recorded long stampTime = stamp.getVersionTimeStamp(); if (isExpiredTombstone(region, stampTime, this.isTombstone())) { // no local change since the tombstone would have timed out - accept the change if (verbose != null) { verbose.append(" - accepting because local timestamp is old"); } return true; } else { return false; } }
private boolean overwritingOldTombstone(LocalRegion region, VersionStamp stamp, VersionTag tag, StringBuilder verbose) { // Tombstone GC does not use locking to stop operations when old tombstones // are being removed. Because of this we might get an operation that was applied // in another VM that has just reaped a tombstone and is now using a reset // entry version number. Because of this we check the timestamp on the current // local entry and see if it is old enough to have expired. If this is the case // we accept the change and allow the tag to be recorded long stampTime = stamp.getVersionTimeStamp(); if (isExpiredTombstone(region, stampTime, this.isTombstone())) { // no local change since the tombstone would have timed out - accept the change if (verbose != null) { verbose.append(" - accepting because local timestamp is old"); } return true; } else { return false; } }
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); }
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); }
boolean apply = false; if (stamp.getVersionTimeStamp() != 0) { // new entries have no timestamp if (tagVersion > 0 && isExpiredTombstone(region, tag.getVersionTimeStamp(), isTombstoneFromGII) && tag.getVersionTimeStamp() > stamp.getVersionTimeStamp()) {
&& tag.getVersionTimeStamp() > stamp.getVersionTimeStamp()) { stamp.setVersionTimeStamp(tag.getVersionTimeStamp()); tag.setTimeStampApplied(true);
&& tag.getVersionTimeStamp() > stamp.getVersionTimeStamp()) { stamp.setVersionTimeStamp(tag.getVersionTimeStamp()); tag.setTimeStampApplied(true);
private boolean doneVerify() { Cache cache = getCache(); LocalRegion lr = (LocalRegion)getCache().getRegion(REGION_NAME); NonTXEntry entry = (NonTXEntry)lr.getEntry(key, true); if (expectExist) { assertTrue(entry != null && entry.getRegionEntry().isTombstone()); } System.out.println("GGG:new timeout="+TombstoneService.REPLICATED_TOMBSTONE_TIMEOUT); if (entry == null || !entry.getRegionEntry().isTombstone()) { return (false == expectExist); } else { long ts = entry.getRegionEntry().getVersionStamp().getVersionTimeStamp(); if (expectExpired) { return (ts + TombstoneService.REPLICATED_TOMBSTONE_TIMEOUT <= ((GemFireCacheImpl)cache).cacheTimeMillis()); // use MAX_WAIT as timeout } else { return (true == expectExist); } } }
assertEquals( "Time stamp did NOT get updated by UPDATE_VERSION operation on LocalRegion", time, stamp.getVersionTimeStamp()); assertEquals(++entryVersion, stamp.getEntryVersion()); assertEquals(dsid, stamp.getDistributedSystemId());
assertEquals( "Time stamp did NOT get updated by UPDATE_VERSION operation on LocalRegion", time, stamp.getVersionTimeStamp()); assertEquals(++entryVersion, stamp.getEntryVersion()); assertEquals(dsid, stamp.getDistributedSystemId());
assertEquals( "Time stamp did NOT get updated by UPDATE_VERSION operation on LocalRegion", time, stamp.getVersionTimeStamp()); assertEquals(++entryVersion, stamp.getEntryVersion()); assertEquals(dsid, stamp.getDistributedSystemId());
assertEquals( "Time stamp did NOT get updated by UPDATE_VERSION operation on LocalRegion", time, stamp.getVersionTimeStamp()); assertEquals(++entryVersion, stamp.getEntryVersion()); assertEquals(dsid, stamp.getDistributedSystemId());
if (time <= stamp.getVersionTimeStamp() && dsid != tag.getDistributedSystemId()) { time = stamp.getVersionTimeStamp() + 1;
if (time <= stamp.getVersionTimeStamp() && dsid != tag.getDistributedSystemId()) { time = stamp.getVersionTimeStamp() + 1;
assertEquals( "Time stamp did NOT get updated by UPDATE_VERSION operation on LocalRegion", time, stamp.getVersionTimeStamp()); assertEquals(++entryVersion, stamp.getEntryVersion()); assertEquals(member, stamp.getMemberID());
assertEquals( "Time stamp did NOT get updated by UPDATE_VERSION operation on LocalRegion", time, stamp.getVersionTimeStamp()); assertEquals(++entryVersion, stamp.getEntryVersion()); assertEquals(member, stamp.getMemberID());
assertEquals( "Time stamp did NOT get updated by UPDATE_VERSION operation on LocalRegion", time, stamp.getVersionTimeStamp()); assertEquals(++entryVersion, stamp.getEntryVersion()); assertEquals(member, stamp.getMemberID());
assertEquals( "Time stamp did NOT get updated by UPDATE_VERSION operation on LocalRegion", time, stamp.getVersionTimeStamp()); assertEquals(++entryVersion, stamp.getEntryVersion()); assertEquals(member, stamp.getMemberID());
assertEquals( "Time stamp did NOT get updated by UPDATE_VERSION operation on LocalRegion", time, stamp.getVersionTimeStamp()); assertEquals(++entryVersion, stamp.getEntryVersion()); assertEquals(member, stamp.getMemberID());
assertEquals( "Time stamp did NOT get updated by UPDATE_VERSION operation on LocalRegion", time, stamp.getVersionTimeStamp()); assertEquals(++entryVersion, stamp.getEntryVersion()); assertEquals(member, stamp.getMemberID());