Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
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.
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)
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.