[ https://issues.apache.org/jira/browse/GEODE-8771?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17246950#comment-17246950 ]
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_r539778832 ########## 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: Thanks @agingade ! This is exactly what I was looking for. Your comment is automatically logged in the JIRA, so we have the context in JIRA now. Looking at the code change of #44431 and #45699, where `waitForIndexInit()` and `lockForCacheModification()` are introduced respectively, I don't see any side effect of swapping the order of them. So I expect it should be good to fix this hang, as long as Darrel's concern is addressed. ---------------------------------------------------------------- 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)