You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@thrift.apache.org by Craig Artley <ca...@hotmail.com> on 2015/05/19 21:19:56 UTC

Avoiding "client died" TTransportExceptions?

While doing some debugging of my server, I noticed that after my handler method returns, another connection is received which immediately fails with an empty TTransportException. The exception stack trace is below.

These are normally silently swallowed by empty catch blocks in TSimpleServer and TThreadPoolServer that look like this
      } catch (TTransportException ttx) {
        // Client died, just move on   // Line 89, TSimpleServer.java
      }

Here's the exception.

org.apache.thrift.transport.TTransportException
    at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132)
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84)
    at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:362)
    at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:284)
    at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:191)
    at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
    at com.foo.FooServerFactory$FooProcessor.process(FooServerFactory.java:165)
    at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:83)

My question is, am I doing something wrong to trigger this extra connection? This happens when the service method returns in the client, before the client gets a chance to call TTransport.close.

  -craig