[ https://issues.apache.org/jira/browse/GEODE-8958?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17288530#comment-17288530 ]
ASF GitHub Bot commented on GEODE-8958: --------------------------------------- nabarunnag commented on a change in pull request #6042: URL: https://github.com/apache/geode/pull/6042#discussion_r580450722 ########## File path: geode-core/src/distributedTest/java/org/apache/geode/internal/cache/versions/TombstoneDUnitTest.java ########## @@ -144,6 +145,75 @@ public void testGetOldestTombstoneTimeReplicate() { }); } + @Test + public void testRewriteBadOldestTombstoneTimeReplicateForTimestamp() { + VM server1 = VM.getVM(-1); + VM server2 = VM.getVM(1); + + final int count = 10; + + server1.invoke(() -> { + createCacheAndRegion(RegionShortcut.REPLICATE_PERSISTENT); + for (int i = 0; i < count; i++) { + region.put("K" + i, "V" + i); + } + }); + + server2.invoke(() -> createCacheAndRegion(RegionShortcut.REPLICATE)); + + server1.invoke(() -> { + TombstoneService.TombstoneSweeper tombstoneSweeper = + ((InternalCache) cache).getTombstoneService().getSweeper((LocalRegion) region); + + RegionEntry regionEntry = ((LocalRegion) region).getRegionEntry("K0"); + VersionTag<?> versionTag = regionEntry.getVersionStamp() + .asVersionTag(); + versionTag.setVersionTimeStamp(System.currentTimeMillis() + 100000); + TombstoneService.Tombstone modifiedTombstone = + new TombstoneService.Tombstone(regionEntry, (LocalRegion) region, + versionTag); + tombstoneSweeper.tombstones.add(modifiedTombstone); + if (tombstoneSweeper.getOldestTombstoneTime() > 0) { + System.out.println("We have a problem"); Review comment: assert checks instead of System outs ########## File path: geode-core/src/main/java/org/apache/geode/internal/cache/TombstoneService.java ########## @@ -749,7 +751,8 @@ protected boolean hasExpired(long msTillHeadTombstoneExpires) { testHook_forceExpirationCount--; return true; } - return msTillHeadTombstoneExpires <= 0; + // In case + return msTillHeadTombstoneExpires <= 0 || msTillHeadTombstoneExpires > EXPIRY_TIME; Review comment: I maybe missing the math but long msTillHeadTombstoneExpires = oldest.getVersionTimeStamp() + EXPIRY_TIME - now; the only time msTillHeadTombstoneExpires is greater than EXPIRY_TIME will be when oldest.timeStamp - now is a postive number. Can this occur? ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Tombstone expiration: in the event that a version timestamp is too far in the > future, expire the tombstone > ---------------------------------------------------------------------------------------------------------- > > Key: GEODE-8958 > URL: https://issues.apache.org/jira/browse/GEODE-8958 > Project: Geode > Issue Type: Bug > Components: core > Reporter: Mark Hanson > Assignee: Mark Hanson > Priority: Major > Labels: pull-request-available > > We are seeing a bug where for some reason, the version timestamp on the > tombstone is too far into the future to be realistic. > > In such a case, we are going to expire the tombstone as soon as we see it. > > -- This message was sent by Atlassian Jira (v8.3.4#803005)