[
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)