Details
-
Improvement
-
Status: Closed
-
Trivial
-
Resolution: Fixed
-
v2.5.2
-
None
Description
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
Attachments
Issue Links
- links to