You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kylin.apache.org by "Xiaobo Liao (JIRA)" <ji...@apache.org> on 2019/03/26 02:58:00 UTC

[jira] [Created] (KYLIN-3908) KylinClient's HttpRequest.releaseConnection is not needed in retrieveMetaData & executeKylinQuery

Xiaobo Liao created KYLIN-3908:
----------------------------------

             Summary: KylinClient's HttpRequest.releaseConnection is not needed in retrieveMetaData &  executeKylinQuery
                 Key: KYLIN-3908
                 URL: https://issues.apache.org/jira/browse/KYLIN-3908
             Project: Kylin
          Issue Type: Improvement
          Components: Driver - JDBC
    Affects Versions: v2.5.2
            Reporter: Xiaobo Liao
             Fix For: Future


In Kylin client's code [https://github.com/apache/kylin/blob/master/jdbc/src/main/java/org/apache/kylin/jdbc/KylinClient.java]

retrieveMetaData &  executeKylinQuery will call HttpRequestBase.releaseConnection() if the HTTP calls are succeeded, but not doing so if calls are failed.

According to HttpClient's stack trace, connections are released back to connection manager after content is consumed.  So it is not necessary to call releaseConnection in retrieveMetaData &  executeKylinQuery. 

Of course calling releaseConnection is not harmful, but the code now looks confusing that only calling releaseConnection if responded with 20x. 

 
BasicClientConnectionManager.releaseConnection(ManagedClientConnection, long, TimeUnit) line: 194    
    ManagedClientConnectionImpl.releaseConnection() line: 447    
    BasicManagedEntity.releaseManagedConnection() line: 201    
    BasicManagedEntity.streamClosed(InputStream) line: 176    
    EofSensorInputStream.checkClose() line: 237    
    EofSensorInputStream.close() line: 186    
    UTF8StreamJsonParser._closeInput() line: 242    
    UTF8StreamJsonParser(ParserBase).close() line: 385    
    ObjectMapper._readMapAndClose(JsonParser, JavaType) line: 3745    
    ObjectMapper.readValue(InputStream, Class<T>) line: 2796    
    KylinClient.executeKylinQuery(String, List<StatementParameter>, Map<String,String>) line: 379    
    KylinClient.executeQuery(String, List<AvaticaParameter>, List<Object>, Map<String,String>) line: 326    
    KylinResultSet.execute() line: 69    
    AvaticaConnection$1.execute() line: 607    
    KylinMeta.prepareAndExecute(Meta$StatementHandle, String, long, int, Meta$PrepareCallback) line: 111    
    KylinConnection(AvaticaConnection).prepareAndExecuteInternal(AvaticaStatement, String, long) line: 615    
    KylinStatement(AvaticaStatement).executeInternal(String) line: 148    
    KylinStatement(AvaticaStatement).executeQuery(String) line: 218    



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)