Bruce Schuchardt created GEODE-5646:
---------------------------------------

             Summary: Client throws ToDataException when locator is shutting 
down
                 Key: GEODE-5646
                 URL: https://issues.apache.org/jira/browse/GEODE-5646
             Project: Geode
          Issue Type: Bug
          Components: client/server
            Reporter: Bruce Schuchardt


This hasn't been seen in Geode but in an older version of Pivotal GemFire.  The 
code in question hasn't changed so we ought to fix it.

{noformat}
ERROR util.TestException: doEntryOperations caught Exception 
com.gemstone.gemfire.ToDataException: toData failed on DataSerializable class 
com.gemstone.gemfire.distributed.internal.ServerLocation
        at 
com.gemstone.gemfire.internal.InternalDataSerializer.invokeToData(InternalDataSerializer.java:2424)
        at 
com.gemstone.gemfire.cache.client.internal.locator.SerializationHelper.writeServerLocations(SerializationHelper.java:39)
        at 
com.gemstone.gemfire.cache.client.internal.locator.SerializationHelper.writeServerLocationSet(SerializationHelper.java:75)
        at 
com.gemstone.gemfire.cache.client.internal.locator.ClientConnectionRequest.toData(ClientConnectionRequest.java:44)
        at 
com.gemstone.gemfire.internal.InternalDataSerializer.invokeToData(InternalDataSerializer.java:2411)
        at 
com.gemstone.gemfire.internal.InternalDataSerializer.writeDSFID(InternalDataSerializer.java:1382)
        at 
com.gemstone.gemfire.internal.InternalDataSerializer.basicWriteObject(InternalDataSerializer.java:2156)
        at 
com.gemstone.gemfire.DataSerializer.writeObject(DataSerializer.java:3181)
        at 
com.gemstone.org.jgroups.stack.tcpserver.TcpClient.requestToServer(TcpClient.java:115)
        at 
com.gemstone.org.jgroups.stack.tcpserver.TcpClient.requestToServer(TcpClient.java:78)
        at 
com.gemstone.gemfire.cache.client.internal.AutoConnectionSourceImpl.queryOneLocator(AutoConnectionSourceImpl.java:188)
        at 
com.gemstone.gemfire.cache.client.internal.AutoConnectionSourceImpl.queryLocators(AutoConnectionSourceImpl.java:220)
        at 
com.gemstone.gemfire.cache.client.internal.AutoConnectionSourceImpl.findServer(AutoConnectionSourceImpl.java:132)
        at 
com.gemstone.gemfire.cache.client.internal.ConnectionFactoryImpl.createClientToServerConnection(ConnectionFactoryImpl.java:227)
        at 
com.gemstone.gemfire.cache.client.internal.pooling.ConnectionManagerImpl.exchangeConnection(ConnectionManagerImpl.java:421)
        at 
com.gemstone.gemfire.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:173)
        at 
com.gemstone.gemfire.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:115)
        at 
com.gemstone.gemfire.cache.client.internal.PoolImpl.execute(PoolImpl.java:702)
        at 
com.gemstone.gemfire.cache.client.internal.KeySetOp.execute(KeySetOp.java:38)
        at 
com.gemstone.gemfire.cache.client.internal.ServerRegionProxy.keySet(ServerRegionProxy.java:348)
        at 
com.gemstone.gemfire.internal.cache.LocalRegion.keySetOnServer(LocalRegion.java:4159)
{noformat}

The client is trying to serialize ServerLocation objects and send them to a 
locator. AutoConnectionSourceImpl.queryOneLocator() has code to handle 
IOException and report the locator as being down but since ServerLocation isn't 
a DataSerializableFixedID instance the serialization code throws a 
ToDataException instead of an IOException. Adding ToDataException handling to 
queryOneLocator() should fix the problem.




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

Reply via email to