Stas Sribnyi created THRIFT-5025:
------------------------------------

             Summary: Incomplete promise rejection
                 Key: THRIFT-5025
                 URL: https://issues.apache.org/jira/browse/THRIFT-5025
             Project: Thrift
          Issue Type: Bug
          Components: Node.js - Library
    Affects Versions: 0.12.0
            Reporter: Stas Sribnyi


I have a problem while performing client requests created with Multiplexer and 
HttpConnection.

In case of some errors like 'ECONNREFUSED', 'Connection timed out' and some 
other errors http_connection *emits an error, but nothing handles it*, 
therefore promise does not reject and in fact just hangs, so we have memory 
leaks.

Looks like promise can only be rejected only with a call of clientCallback
[https://github.com/apache/thrift/blob/41f47aff7ccc1a093eb5e48250377c1178babeec/lib/nodejs/lib/thrift/http_connection.js#L140]

As far as I did not find any example of such cases (multiplexer+http 
connection+node), it is possible that I use it in the wrong way, but from the 
source code perspective it looks like a design flaw, could you please take a 
look into this issue?

Here is a simplified source code I use:
{code:java}
const multiplexer = new Multiplexer();
const connection = new HttpConnection({
      path: '/rpc',
      transport: TBufferedTransport,
      protocol: TBinaryProtocol,
      nodeOptions: {
            host: '127.0.0.1',
            port: 8989,
      },
});

const client = multiplexer.createClient(
      'UserClient',
      UserClient,
      connection
);

try {
      const user = await client.registerUser({
            // Some props related to user
      } as any);

      // perform some actions with response
} catch (error) { // this never happens in case of connection issues and some 
internal errors of http connection
      // log error 
}
{code}
 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to