[ https://issues.apache.org/jira/browse/GEODE-9030?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17309775#comment-17309775 ]
ASF subversion and git services commented on GEODE-9030: -------------------------------------------------------- Commit 14e0b71fbe2a7f315cf2d3712d394f26cfa562fa in geode's branch refs/heads/support/1.14 from Barry Oglesby [ https://gitbox.apache.org/repos/asf?p=geode.git;h=14e0b71 ] GEODE-9030: Modified PartitionedIndex to reset arbitraryBucketIndex (#6183) (cherry picked from commit d7342cd0266010313a245920dee8e82034593608) > The PartitionedIndex arbitraryBucketIndex doesn't get reset when the > BucketRegion defining it is moved > ------------------------------------------------------------------------------------------------------ > > Key: GEODE-9030 > URL: https://issues.apache.org/jira/browse/GEODE-9030 > Project: Geode > Issue Type: Bug > Components: querying > Reporter: Barrett Oglesby > Assignee: Barrett Oglesby > Priority: Major > Labels: blocks-1.14.0, pull-request-available > Fix For: 1.12.2, 1.13.3, 1.14.0, 1.15.0 > > > This causes a RegionDestroyedException like this when executing a query > containing a != clause: > {noformat} > Exception in thread "main" > org.apache.geode.cache.client.ServerOperationException: remote server on > 10.166.145.16(client:27461:loner):58776:dfd3ba27:client: While performing a > remote query > at > org.apache.geode.cache.client.internal.AbstractOp.processChunkedResponse(AbstractOp.java:342) > at > org.apache.geode.cache.client.internal.QueryOp$QueryOpImpl.processResponse(QueryOp.java:168) > at > org.apache.geode.cache.client.internal.AbstractOp.processResponse(AbstractOp.java:224) > at > org.apache.geode.cache.client.internal.AbstractOp.attemptReadResponse(AbstractOp.java:197) > at > org.apache.geode.cache.client.internal.AbstractOp.attempt(AbstractOp.java:384) > at > org.apache.geode.cache.client.internal.ConnectionImpl.execute(ConnectionImpl.java:284) > at > org.apache.geode.cache.client.internal.pooling.PooledConnection.execute(PooledConnection.java:355) > at > org.apache.geode.cache.client.internal.OpExecutorImpl.executeWithPossibleReAuthentication(OpExecutorImpl.java:756) > at > org.apache.geode.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:142) > at > org.apache.geode.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:112) > at > org.apache.geode.cache.client.internal.PoolImpl.execute(PoolImpl.java:797) > at > org.apache.geode.cache.client.internal.QueryOp.execute(QueryOp.java:59) > at > org.apache.geode.cache.client.internal.ServerProxy.query(ServerProxy.java:59) > at > org.apache.geode.cache.query.internal.DefaultQuery.executeOnServer(DefaultQuery.java:327) > at > org.apache.geode.cache.query.internal.DefaultQuery.execute(DefaultQuery.java:215) > at > org.apache.geode.cache.query.internal.DefaultQuery.execute(DefaultQuery.java:197) > Caused by: org.apache.geode.cache.query.QueryInvocationTargetException: The > Region on which query is executed may have been > destroyed.BucketRegion[path='/__PR/_B__trade_0;serial=12;primary=false] > at > org.apache.geode.internal.cache.PRQueryProcessor.executeQueryOnBuckets(PRQueryProcessor.java:264) > at > org.apache.geode.internal.cache.PRQueryProcessor.executeSequentially(PRQueryProcessor.java:214) > at > org.apache.geode.internal.cache.PRQueryProcessor.executeQuery(PRQueryProcessor.java:124) > at > org.apache.geode.internal.cache.partitioned.QueryMessage.operateOnPartitionedRegion(QueryMessage.java:210) > Caused by: org.apache.geode.cache.RegionDestroyedException: > BucketRegion[path='/__PR/_B__trade_0;serial=12;primary=false] > at > org.apache.geode.internal.cache.LocalRegion.checkRegionDestroyed(LocalRegion.java:7352) > at > org.apache.geode.internal.cache.LocalRegion.checkReadiness(LocalRegion.java:2757) > at > org.apache.geode.internal.cache.BucketRegion.checkReadiness(BucketRegion.java:1437) > at > org.apache.geode.internal.cache.LocalRegion.size(LocalRegion.java:8313) > at > org.apache.geode.cache.query.internal.index.CompactRangeIndex.getSizeEstimate(CompactRangeIndex.java:331) > at > org.apache.geode.cache.query.internal.CompiledComparison.getSizeEstimate(CompiledComparison.java:337) > at > org.apache.geode.cache.query.internal.GroupJunction.organizeOperands(GroupJunction.java:146) > at > org.apache.geode.cache.query.internal.AbstractGroupOrRangeJunction.filterEvaluate(AbstractGroupOrRangeJunction.java:148) > at > org.apache.geode.cache.query.internal.CompiledJunction.filterEvaluate(CompiledJunction.java:190) > at > org.apache.geode.cache.query.internal.CompiledSelect.evaluate(CompiledSelect.java:538) > at > org.apache.geode.cache.query.internal.CompiledSelect.evaluate(CompiledSelect.java:53) > at > org.apache.geode.cache.query.internal.DefaultQuery.executeUsingContext(DefaultQuery.java:357) > at > org.apache.geode.internal.cache.PRQueryProcessor.executeQueryOnBuckets(PRQueryProcessor.java:248) > {noformat} > Here is an example query that fails: > {noformat} > SELECT * FROM /trade WHERE arrangementId = 'aId_1' AND tradeStatus.toString() > != 'CLOSED' > {noformat} > Here is a test that reproduces it: > * start one server with region configured as PARTITION with: > ** 2 buckets > ** PartitionResolver that puts the first entry in bucket 0, every other > entry in bucket 1 > * load N entries > * the index in bucket 0 becomes the arbitraryBucketIndex > * start a second server > * rebalance > * bucket 0 moves from the first server to the second server > * run the query -- This message was sent by Atlassian Jira (v8.3.4#803005)