[ https://issues.apache.org/jira/browse/GEODE-8771?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17246192#comment-17246192 ]
ASF GitHub Bot commented on GEODE-8771: --------------------------------------- jchen21 commented on a change in pull request #5823: URL: https://github.com/apache/geode/pull/5823#discussion_r538894612 ########## File path: geode-core/src/main/java/org/apache/geode/internal/cache/AbstractRegionMap.java ########## @@ -1282,14 +1282,18 @@ public boolean invalidate(EntryEventImpl event, boolean invokeCallbacks, boolean DiskRegion dr = owner.getDiskRegion(); boolean ownerIsInitialized = owner.isInitialized(); + // lock before waitForIndexInit so that we should wait + // till a concurrent clear to finish + lockForCacheModification(owner, event); Review comment: I am not sure I understand why the code change here can fix the hang, and not causing a different type of hang. I do see the two-line comment above. But it does not answer my question. It would be helpful for the reviewers to understand it, if there is some explanation of root cause analysis and the fix in the pull request description or in the JIRA. It will also help for future code maintenance. ---------------------------------------------------------------- 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 > concurrent puts and invalidates will cause PR clear to hang > ----------------------------------------------------------- > > Key: GEODE-8771 > URL: https://issues.apache.org/jira/browse/GEODE-8771 > Project: Geode > Issue Type: Sub-task > Components: core > Reporter: Jinmei Liao > Assignee: Jinmei Liao > Priority: Major > Labels: GeodeOperationAPI, pull-request-available > > On current feature/GEODE-7665 feature branch. The below test will hang: > {quote}public class PRClearIntegrationTest { > @Rule > public ServerStarterRule server = new ServerStarterRule().withAutoStart(); > @Rule > public ExecutorServiceRule executor = new ExecutorServiceRule(); > @Test > public void test() throws Exception { > InternalCache cache = server.getCache(); > Region<Object, Object> region = server.createPartitionRegion("regionA", > f->{}, f->f.setTotalNumBuckets(1)); > cache.getQueryService().createIndex("indexA", "r", "/regionA r"); > region.put(0, "value0"); > CompletableFuture<Void> put = executor.runAsync(() -> > { > Thread.currentThread().setName("put-Thread"); > IntStream.range(0, 1).forEach(i-> region.invalidate(i, i)); } > ); > CompletableFuture<Void> invalidate = executor.runAsync(() -> > { > Thread.currentThread().setName("invalidate-Thread"); > IntStream.range(0, 1).forEach(i-> region.invalidate(0)); } > ); > CompletableFuture<Void> clear = executor.runAsync(() -> > { > Thread.currentThread().setName("Clear-Thread"); > region.clear(); } > ); > put.get(); > clear.get(); > invalidate.get(); > } > } > {quote} -- This message was sent by Atlassian Jira (v8.3.4#803005)