在執行下一個代碼我們可以觀察到一個永遠不會結束的失去了線程:
@Test
公共空間pureConnectionErrorTest()拋出異常{
試一試{
DriverManager。getConnection(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(未知來源)