[ https://issues.apache.org/jira/browse/GEODE-8680?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jianxia Chen updated GEODE-8680: -------------------------------- Description: >From the stress test of a dunit test, >[https://concourse.apachegeode-ci.info/builds/203332] ``` org.apache.geode.internal.cache.PartitionedRegionClearWithAlterRegionDUnitTest > testClearRegionWhileChangingEntryIdleExpiration FAILED java.lang.AssertionError: An exception occurred during asynchronous invocation. at org.apache.geode.test.dunit.AsyncInvocation.checkException(AsyncInvocation.java:297) at org.apache.geode.test.dunit.AsyncInvocation.await(AsyncInvocation.java:448) at org.apache.geode.test.dunit.AsyncInvocation.await(AsyncInvocation.java:178) at org.apache.geode.internal.cache.PartitionedRegionClearWithAlterRegionDUnitTest.testClearRegionWhileChangingEntryIdleExpiration(PartitionedRegionClearWithAlterRegionDUnitTest.java:285) Caused by: org.junit.ComparisonFailure: expected:<[0]> but was:<[1]> at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at org.apache.geode.internal.cache.PartitionedRegionClearWithAlterRegionDUnitTest.lambda$testClearRegionWhileChangingEntryIdleExpiration$f50cfc65$1(PartitionedRegionClearWithAlterRegionDUnitTest.java:281) ``` The code of dunit test can be find at [https://github.com/apache/geode/pull/5516] private void initialize() { server1 = VM.getVM(0); server2 = VM.getVM(1); server1.invoke(() -> { cacheRule.createCache(); cacheRule.getCache().createRegionFactory(RegionShortcut.PARTITION).setStatisticsEnabled(true) .create(REGION_NAME); }); server2.invoke(() -> { cacheRule.createCache(); cacheRule.getCache().createRegionFactory(RegionShortcut.PARTITION).setStatisticsEnabled(true) .create(REGION_NAME); }); server1.invoke(() -> { populateRegion(); Region region = cacheRule.getCache().getRegion(REGION_NAME); assertThat(region.size()).isEqualTo(NUM_ENTRIES); }); server2.invoke(() -> { Region region = cacheRule.getCache().getRegion(REGION_NAME); assertThat(region.size()).isEqualTo(NUM_ENTRIES); }); } @Test public void testClearRegionWhileChangingEntryIdleExpiration() throws InterruptedException { initialize(); server1.invoke(() -> DistributionMessageObserver.setInstance(getDistributionMessageObserver())); AsyncInvocation asyncInvocation1 = server1.invokeAsync(() -> { Region region = cacheRule.getCache().getRegion(REGION_NAME); AttributesMutator attributesMutator = region.getAttributesMutator(); ExpirationAttributes expirationAttributes = new ExpirationAttributes(1, ExpirationAction.DESTROY); getBlackboard().waitForGate(GATE_NAME); attributesMutator.setEntryIdleTimeout(expirationAttributes); assertThat(region.getAttributes().getEntryIdleTimeout()).isEqualTo(expirationAttributes); }); AsyncInvocation asyncInvocation2 = server2.invokeAsync(() -> { cacheRule.getCache().getRegion(REGION_NAME).clear(); assertThat(cacheRule.getCache().getRegion(REGION_NAME).size()).isEqualTo(0); }); asyncInvocation1.await(); asyncInvocation2.await(); } was: >From the stress test of a dunit test, >[https://concourse.apachegeode-ci.info/builds/203332] ``` org.apache.geode.internal.cache.PartitionedRegionClearWithAlterRegionDUnitTest > testClearRegionWhileChangingEntryIdleExpiration FAILED java.lang.AssertionError: An exception occurred during asynchronous invocation. at org.apache.geode.test.dunit.AsyncInvocation.checkException(AsyncInvocation.java:297) at org.apache.geode.test.dunit.AsyncInvocation.await(AsyncInvocation.java:448) at org.apache.geode.test.dunit.AsyncInvocation.await(AsyncInvocation.java:178) at org.apache.geode.internal.cache.PartitionedRegionClearWithAlterRegionDUnitTest.testClearRegionWhileChangingEntryIdleExpiration(PartitionedRegionClearWithAlterRegionDUnitTest.java:285) Caused by: org.junit.ComparisonFailure: expected:<[0]> but was:<[1]> at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at org.apache.geode.internal.cache.PartitionedRegionClearWithAlterRegionDUnitTest.lambda$testClearRegionWhileChangingEntryIdleExpiration$f50cfc65$1(PartitionedRegionClearWithAlterRegionDUnitTest.java:281) ``` The code of dunit test can be find at https://github.com/apache/geode/pull/5516 > Partitioned region clear does not completely clear the region with concurrent > alteration of entry expiration time > ----------------------------------------------------------------------------------------------------------------- > > Key: GEODE-8680 > URL: https://issues.apache.org/jira/browse/GEODE-8680 > Project: Geode > Issue Type: Bug > Reporter: Jianxia Chen > Priority: Major > Labels: GeodeOperationAPI > > From the stress test of a dunit test, > [https://concourse.apachegeode-ci.info/builds/203332] > ``` > org.apache.geode.internal.cache.PartitionedRegionClearWithAlterRegionDUnitTest > > testClearRegionWhileChangingEntryIdleExpiration FAILED > java.lang.AssertionError: An exception occurred during asynchronous > invocation. > at > org.apache.geode.test.dunit.AsyncInvocation.checkException(AsyncInvocation.java:297) > at > org.apache.geode.test.dunit.AsyncInvocation.await(AsyncInvocation.java:448) > at > org.apache.geode.test.dunit.AsyncInvocation.await(AsyncInvocation.java:178) > at > org.apache.geode.internal.cache.PartitionedRegionClearWithAlterRegionDUnitTest.testClearRegionWhileChangingEntryIdleExpiration(PartitionedRegionClearWithAlterRegionDUnitTest.java:285) > Caused by: > org.junit.ComparisonFailure: expected:<[0]> but was:<[1]> > at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native > Method) > at > jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) > at > jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) > at > org.apache.geode.internal.cache.PartitionedRegionClearWithAlterRegionDUnitTest.lambda$testClearRegionWhileChangingEntryIdleExpiration$f50cfc65$1(PartitionedRegionClearWithAlterRegionDUnitTest.java:281) > ``` > The code of dunit test can be find at > [https://github.com/apache/geode/pull/5516] > private void initialize() { > server1 = VM.getVM(0); > server2 = VM.getVM(1); > server1.invoke(() -> { > cacheRule.createCache(); > > cacheRule.getCache().createRegionFactory(RegionShortcut.PARTITION).setStatisticsEnabled(true) > .create(REGION_NAME); > }); > server2.invoke(() -> { > cacheRule.createCache(); > > cacheRule.getCache().createRegionFactory(RegionShortcut.PARTITION).setStatisticsEnabled(true) > .create(REGION_NAME); > }); > server1.invoke(() -> { > populateRegion(); > Region region = cacheRule.getCache().getRegion(REGION_NAME); > assertThat(region.size()).isEqualTo(NUM_ENTRIES); > }); > server2.invoke(() -> { > Region region = cacheRule.getCache().getRegion(REGION_NAME); > assertThat(region.size()).isEqualTo(NUM_ENTRIES); > }); > } > @Test > public void testClearRegionWhileChangingEntryIdleExpiration() throws > InterruptedException { > initialize(); > server1.invoke(() -> > DistributionMessageObserver.setInstance(getDistributionMessageObserver())); > AsyncInvocation asyncInvocation1 = server1.invokeAsync(() -> { > Region region = cacheRule.getCache().getRegion(REGION_NAME); > AttributesMutator attributesMutator = region.getAttributesMutator(); > ExpirationAttributes expirationAttributes = > new ExpirationAttributes(1, ExpirationAction.DESTROY); > getBlackboard().waitForGate(GATE_NAME); > attributesMutator.setEntryIdleTimeout(expirationAttributes); > > assertThat(region.getAttributes().getEntryIdleTimeout()).isEqualTo(expirationAttributes); > }); > AsyncInvocation asyncInvocation2 = server2.invokeAsync(() -> { > cacheRule.getCache().getRegion(REGION_NAME).clear(); > > assertThat(cacheRule.getCache().getRegion(REGION_NAME).size()).isEqualTo(0); > }); > asyncInvocation1.await(); > asyncInvocation2.await(); > } -- This message was sent by Atlassian Jira (v8.3.4#803005)