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)