取消
顯示的結果
而不是尋找
你的意思是:

無法建立連接時線程泄漏

krocodl
新的因素

在執行下一個代碼我們可以觀察到一個永遠不會結束的失去了線程:

@Test
公共空間pureConnectionErrorTest()拋出異常{
試一試{
DriverManagergetConnection(DATABRICKS_JDBC_URL,DATABRICKS_USERNAME,DATABRICKS_PASSWORD+“啊!”);
失敗();
}(異常例){
/ /這是正常的
}
(真正的){
線程睡眠(1000年);
係統.println (“。”);
}
}

這個線程看起來像下一個:

“連接驅逐者”# 18守護進程一家= 5 os_prio = 31 cpu = 0.10 ms運行= 7.05年代tid = 0 = 0 x9603 x00007f9bd0925c00國家免疫日等待條件[0 x000000030ef7d000]
java.lang.Thread。狀態:TIMED_WAITING(睡覺)
在java.lang.Thread.sleep (java.base@17.0.3 /本機方法)
在com.databricks.client.jdbc42.internal.apache.http.impl.client.IdleConnectionEvictor 1.美元運行(IdleConnectionEvictor.java: 66)
java.lang.Thread.run (java.base@17.0.3 / Thread.java: 833)

它丟失,因為方法IdleConnectionEvictor #關閉沒有叫。

根例外:

引起的:com.databricks.client.support.exceptions。ErrorException(磚):[DatabricksJDBCDriver](500593)通信鏈路故障。無法連接到服務器。原因:HTTP響應代碼:403,錯誤信息:未知。
…85普通幀省略
引起的:com.databricks.client.jdbc42.internal.apache.thrift.transport.TTransportException: HTTP響應代碼:403,錯誤信息:未知
在com.databricks.client.hivecommon.api.TETHttpClient。handleHeaderErrorMessage(未知來源)

1接受解決方案

接受的解決方案

krocodl
新的因素

我懷疑,你必須打電話

.close TProtocol # getTransport () ()

在捕捉異常

HS2Client #openSession ();

在這種情況下,你也重寫TETHttpClient #密切()來調用((ExtendedHttpClient) this.m_client) .close ();在任何情況下。

我測試後開始正常工作。

在原帖子查看解決方案

1回複1

krocodl
新的因素

我懷疑,你必須打電話

.close TProtocol # getTransport () ()

在捕捉異常

HS2Client #openSession ();

在這種情況下,你也重寫TETHttpClient #密切()來調用((ExtendedHttpClient) this.m_client) .close ();在任何情況下。

我測試後開始正常工作。

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map