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

Reply via email to