[ https://issues.apache.org/jira/browse/GEODE-92?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17547355#comment-17547355 ]
Geode Integration commented on GEODE-92: ---------------------------------------- Seen in [windows-core-integration-test-openjdk8 #386|https://concourse.apachegeode-ci.info/teams/main/pipelines/apache-develop-main/jobs/windows-core-integration-test-openjdk8/builds/386] ... see [test results|http://files.apachegeode-ci.info/builds/apache-develop-main/1.16.0-build.0305/test-results/integrationTest/1654217268/] or download [artifacts|http://files.apachegeode-ci.info/builds/apache-develop-main/1.16.0-build.0305/test-artifacts/1654217268/windows-coreintegrationtestfiles-openjdk8-1.16.0-build.0305.tgz]. > PR with entry eviction 1 leaves 3 entries in memory with async overflow > ----------------------------------------------------------------------- > > Key: GEODE-92 > URL: https://issues.apache.org/jira/browse/GEODE-92 > Project: Geode > Issue Type: Bug > Components: eviction > Reporter: Dan Smith > Assignee: Sai Boorlagadda > Priority: Major > Labels: pull-request-available > Fix For: 1.0.0-incubating.M3, 1.8.0 > > Attachments: > 0001-Test-that-demonstrates-two-many-entries-in-memory-wi.patch > > Time Spent: 20m > Remaining Estimate: 0h > > I discovered this while working on a unit test for another issue. It appears > that when configuring a PR with entry eviction 1, in some cases there ends up > being more than 1 entry left in memory when using overflow to disk with > disk-synchronous=false. > With synchronous disk, this issue does not occur. > A deadlock was also found when doing a put or create on a region with custom > expiry callback doing getValue(): > "ServerConnection on port 40404 Thread 1543350" tid=0x5267ad owned by > "ServerConnection on port 40404 Thread 1543342" tid=0x52679b > java.lang.Thread.State: BLOCKED > at > org.apache.geode.internal.cache.eviction.AbstractEvictionList.isEvictable(AbstractEvictionList.java:199) > - blocked on > org.apache.geode.internal.cache.entries.VersionedStatsLRURegionEntryHeapObjectKey@6027657a > at > org.apache.geode.internal.cache.eviction.LRUListWithSyncSorting.getEvictableEntry(LRUListWithSyncSorting.java:72) > at > org.apache.geode.internal.cache.AbstractLRURegionMap.lruUpdateCallback(AbstractLRURegionMap.java:445) > at > org.apache.geode.internal.cache.LocalRegion.getDeserialized(LocalRegion.java:1276) > at > org.apache.geode.internal.cache.LocalRegion$ExpiryRegionEntry.getValue(LocalRegion.java:7893) > at > org.apache.geode.modules.util.SessionCustomExpiry.getExpiry(SessionCustomExpiry.java:38) > at > org.apache.geode.internal.cache.LocalRegion.createExpiryTask(LocalRegion.java:7995) > at > org.apache.geode.internal.cache.LocalRegion.addExpiryTask(LocalRegion.java:8109) > at > org.apache.geode.internal.cache.LocalRegion.addExpiryTaskIfAbsent(LocalRegion.java:7810) > at > org.apache.geode.internal.cache.LocalRegion.updateStatsForPut(LocalRegion.java:7116) > at > org.apache.geode.internal.cache.LocalRegion.basicPutPart2(LocalRegion.java:5739) > at > org.apache.geode.internal.cache.BucketRegion.basicPutPart2(BucketRegion.java:677) > at > org.apache.geode.internal.cache.AbstractRegionMap.basicPut(AbstractRegionMap.java:2864) > - locked > org.apache.geode.internal.cache.entries.VersionedStatsLRURegionEntryHeapObjectKey@4efa554 > at > org.apache.geode.internal.cache.BucketRegion.virtualPut(BucketRegion.java:503) > at > org.apache.geode.internal.cache.PartitionedRegionDataStore.putLocally(PartitionedRegionDataStore.java:1223) > at > org.apache.geode.internal.cache.PartitionedRegion.putInBucket(PartitionedRegion.java:2819) > at > org.apache.geode.internal.cache.PartitionedRegion.virtualPut(PartitionedRegion.java:2027) > at > org.apache.geode.internal.cache.LocalRegionDataView.putEntry(LocalRegionDataView.java:152) > at > org.apache.geode.internal.cache.LocalRegion.basicUpdate(LocalRegion.java:5603) > at > org.apache.geode.internal.cache.LocalRegion.basicBridgePut(LocalRegion.java:5240) > at > org.apache.geode.internal.cache.tier.sockets.command.Put65.cmdExecute(Put65.java:390) > at > org.apache.geode.internal.cache.tier.sockets.BaseCommand.execute(BaseCommand.java:163) > at > org.apache.geode.internal.cache.tier.sockets.ServerConnection.doNormalMsg(ServerConnection.java:797) > at > org.apache.geode.internal.cache.tier.sockets.LegacyServerConnection.doOneMessage(LegacyServerConnection.java:85) > at > org.apache.geode.internal.cache.tier.sockets.ServerConnection.run(ServerConnection.java:1179) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at > org.apache.geode.internal.cache.tier.sockets.AcceptorImpl$4$1.run(AcceptorImpl.java:641) > at java.lang.Thread.run(Thread.java:748) > Number of locked synchronizers = 1 > - java.util.concurrent.ThreadPoolExecutor$Worker@b5c77c6 > > -- This message was sent by Atlassian Jira (v8.20.7#820007)