Yuhao Fang created THRIFT-3344:
----------------------------------

             Summary: Error in TThreadPoolServer
                 Key: THRIFT-3344
                 URL: https://issues.apache.org/jira/browse/THRIFT-3344
             Project: Thrift
          Issue Type: Improvement
          Components: Java - Library
            Reporter: Yuhao Fang
            Priority: Minor


org.apache.thrift.server.TThreadPoolServer

We got *NoClassDefFoundError* here:
{code:java}
...
try {
      ... 
       while (true) {

            if (eventHandler != null) {
              eventHandler.processContext(connectionContext, inputTransport, 
outputTransport);
            }

            if(stopped_ || !processor.process(inputProtocol, outputProtocol)) {
              break;
            }
        }
      } catch (TSaslTransportException ttx) {
        // Something thats not SASL was in the stream, continue silently 
      } catch (TTransportException ttx) {
        // Assume the client died and continue silently
      } catch (TException tx) {
        LOGGER.error("Thrift error occurred during processing of message.", tx);
      } catch (Exception x) {
        LOGGER.error("Error occurred during processing of message.", x);
      }
{code}

Server does not execute the code below:
{code:java}
      if (eventHandler != null) {
        eventHandler.deleteContext(connectionContext, inputProtocol, 
outputProtocol);
      }

      if (inputTransport != null) {
        inputTransport.close();
      }

      if (outputTransport != null) {
        outputTransport.close();
      }

      if (client_.isOpen()) {
        client_.close();
      }
{code}

So the client doesn't know what happened, still waiting the response from 
server.

Shall we move these clean up code to finally scope? or catch the Error.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to