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

Reply via email to