Uploaded image for project: 'Geode'
  1. Geode
  2. GEODE-5646

Client throws ToDataException when locator is shutting down

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 1.7.0
    • client/server
    • 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.

      Attachments

        Activity

          People

            bschuchardt Bruce J Schuchardt
            bschuchardt Bruce J Schuchardt
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: