[ https://issues.apache.org/jira/browse/GEODE-8771?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17246726#comment-17246726 ]
ASF GitHub Bot commented on GEODE-8771: --------------------------------------- jinmeiliao commented on a change in pull request #5823: URL: https://github.com/apache/geode/pull/5823#discussion_r539527585 ########## 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: It would bee nice to run a full regression with this change to see if it will cause another hang. Right now I don't think I am fully qualified to explain to you on that. ---------------------------------------------------------------- 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)