Eric Shu created GEODE-5849:
-------------------------------

             Summary: RemoveAll operation on client should not wrap the 
CacheClosedException (due to client shutdown) to ServerOperationException
                 Key: GEODE-5849
                 URL: https://issues.apache.org/jira/browse/GEODE-5849
             Project: Geode
          Issue Type: Bug
          Components: regions
            Reporter: Eric Shu


The client removeAll operation failed with ServerOperationException as client 
cache is closing.
org.apache.geode.cache.client.ServerOperationException: remote server on 
rs-FullRegression09040105a2i32xlarge-hydra-client-43(edgegemfire3_host1_19763:19763:loner):55926:c152d2bc:edgegemfire3_host1_19763:
 Region /testRegion removeAll at server applied partial keys due to exception.
        at 
org.apache.geode.internal.cache.LocalRegion.basicRemoveAll(LocalRegion.java:9795)
        at 
org.apache.geode.internal.cache.LocalRegion.removeAll(LocalRegion.java:9508)
Caused by: org.apache.geode.cache.CacheClosedException: The cache is closed., 
caused by java.io.EOFException: The connection has been reset while reading the 
header
        at 
org.apache.geode.internal.cache.GemFireCacheImpl$Stopper.generateCancelledException(GemFireCacheImpl.java:1563)
        at 
org.apache.geode.cache.client.internal.PoolImpl.generatePoolOrCacheCancelledException(PoolImpl.java:1476)
        at 
org.apache.geode.cache.client.internal.PoolImpl.access$100(PoolImpl.java:77)
        at 
org.apache.geode.cache.client.internal.PoolImpl$PoolOrCacheStopper.generateCancelledException(PoolImpl.java:1377)
        at 
org.apache.geode.CancelCriterion.checkCancelInProgress(CancelCriterion.java:83)
        at 
org.apache.geode.cache.client.internal.OpExecutorImpl.handleException(OpExecutorImpl.java:655)
        at 
org.apache.geode.cache.client.internal.OpExecutorImpl.handleException(OpExecutorImpl.java:631)
        at 
org.apache.geode.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:180)
        at 
org.apache.geode.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:128)
        at 
org.apache.geode.cache.client.internal.PoolImpl.execute(PoolImpl.java:787)
        at 
org.apache.geode.cache.client.internal.RemoveAllOp.execute(RemoveAllOp.java:75)
        at 
org.apache.geode.cache.client.internal.RemoveAllOp.execute(RemoveAllOp.java:178)
        at 
org.apache.geode.cache.client.internal.ServerRegionProxy.removeAll(ServerRegionProxy.java:613)
        at 
org.apache.geode.internal.cache.LocalRegion.basicRemoveAll(LocalRegion.java:9770)
        ... 12 more
Caused by: java.io.EOFException: The connection has been reset while reading 
the header
        at 
org.apache.geode.internal.cache.tier.sockets.Message.fetchHeader(Message.java:813)
        at 
org.apache.geode.internal.cache.tier.sockets.ChunkedMessage.readHeader(ChunkedMessage.java:198)
        at 
org.apache.geode.cache.client.internal.AbstractOp.processChunkedResponse(AbstractOp.java:333)
        at 
org.apache.geode.cache.client.internal.RemoveAllOp$RemoveAllOpImpl.processResponse(RemoveAllOp.java:290)
        at 
org.apache.geode.cache.client.internal.AbstractOp.attemptReadResponse(AbstractOp.java:198)
        at 
org.apache.geode.cache.client.internal.AbstractOp.attempt(AbstractOp.java:386)
        at 
org.apache.geode.cache.client.internal.ConnectionImpl.execute(ConnectionImpl.java:276)
        at 
org.apache.geode.cache.client.internal.pooling.PooledConnection.execute(PooledConnection.java:325)
        at 
org.apache.geode.cache.client.internal.OpExecutorImpl.executeWithPossibleReAuthentication(OpExecutorImpl.java:894)
        at 
org.apache.geode.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:171)
        ... 18 more

Current bulk operation has two steps for partitioned region. First, it uses 
single hop mechanism to send smaller maps to different severs based on primary 
bucket location. If this step failed with some reason like primary bucket moved 
or server is crashed, bulk operation will retry each failed smaller map to all 
the nodes one by one.

After the first retry server failed, however, the client checks if client 
itself is being closed before trying to the next server. If it is, it will 
throw CacheClosedException for the operation. Product should not wrap this 
CacheClosedException to ServerOperationException.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to