From 1cf6f8f49f763859f4614a98a94595399b88449f Mon Sep 17 00:00:00 2001 From: "Wang, Fei" Date: Thu, 3 Apr 2025 17:30:56 -0700 Subject: [PATCH 1/4] disconnect --- .../kyuubi/server/KyuubiTBinaryFrontendService.scala | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/kyuubi-server/src/main/scala/org/apache/kyuubi/server/KyuubiTBinaryFrontendService.scala b/kyuubi-server/src/main/scala/org/apache/kyuubi/server/KyuubiTBinaryFrontendService.scala index 2d06bed0160..166759756fb 100644 --- a/kyuubi-server/src/main/scala/org/apache/kyuubi/server/KyuubiTBinaryFrontendService.scala +++ b/kyuubi-server/src/main/scala/org/apache/kyuubi/server/KyuubiTBinaryFrontendService.scala @@ -21,7 +21,7 @@ import java.util.Base64 import org.apache.hadoop.conf.Configuration -import org.apache.kyuubi.KyuubiSQLException +import org.apache.kyuubi.{KyuubiException, KyuubiSQLException} import org.apache.kyuubi.cli.Handle import org.apache.kyuubi.config.KyuubiConf import org.apache.kyuubi.config.KyuubiConf.KYUUBI_SERVER_THRIFT_RESULTSET_DEFAULT_FETCH_SIZE @@ -69,6 +69,16 @@ final class KyuubiTBinaryFrontendService( serverContext: ServerContext, input: TProtocol, output: TProtocol): Unit = { + val handle = serverContext.getSessionHandle + if (handle != null) { + be.sessionManager + .getSessionOption(handle) + .map(_.asInstanceOf[KyuubiSessionImpl]) + .flatMap(_.getSessionEvent).foreach { sessionEvent => + sessionEvent.exception = Some(new KyuubiException( + s"Session between client and Kyuubi server disconnected without closing properly")) + } + } super.deleteContext(serverContext, input, output) MetricsSystem.tracing { ms => ms.decCount(THRIFT_BINARY_CONN_OPEN) From bca7f9b7e0e615a688f19b64e9ba58f548e9f4ac Mon Sep 17 00:00:00 2001 From: "Wang, Fei" Date: Thu, 3 Apr 2025 17:47:36 -0700 Subject: [PATCH 2/4] post --- .../org/apache/kyuubi/server/KyuubiTBinaryFrontendService.scala | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kyuubi-server/src/main/scala/org/apache/kyuubi/server/KyuubiTBinaryFrontendService.scala b/kyuubi-server/src/main/scala/org/apache/kyuubi/server/KyuubiTBinaryFrontendService.scala index 166759756fb..41cc513ef8f 100644 --- a/kyuubi-server/src/main/scala/org/apache/kyuubi/server/KyuubiTBinaryFrontendService.scala +++ b/kyuubi-server/src/main/scala/org/apache/kyuubi/server/KyuubiTBinaryFrontendService.scala @@ -26,6 +26,7 @@ import org.apache.kyuubi.cli.Handle import org.apache.kyuubi.config.KyuubiConf import org.apache.kyuubi.config.KyuubiConf.KYUUBI_SERVER_THRIFT_RESULTSET_DEFAULT_FETCH_SIZE import org.apache.kyuubi.config.KyuubiReservedKeys._ +import org.apache.kyuubi.events.EventBus import org.apache.kyuubi.ha.client.{KyuubiServiceDiscovery, ServiceDiscovery} import org.apache.kyuubi.metrics.MetricsConstants._ import org.apache.kyuubi.metrics.MetricsSystem @@ -77,6 +78,7 @@ final class KyuubiTBinaryFrontendService( .flatMap(_.getSessionEvent).foreach { sessionEvent => sessionEvent.exception = Some(new KyuubiException( s"Session between client and Kyuubi server disconnected without closing properly")) + EventBus.post(sessionEvent) } } super.deleteContext(serverContext, input, output) From e4652141027b3c97eb9ec99fa61325bbb2d97ddb Mon Sep 17 00:00:00 2001 From: "Wang, Fei" Date: Fri, 4 Apr 2025 13:54:20 -0700 Subject: [PATCH 3/4] nit --- .../org/apache/kyuubi/server/KyuubiTBinaryFrontendService.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kyuubi-server/src/main/scala/org/apache/kyuubi/server/KyuubiTBinaryFrontendService.scala b/kyuubi-server/src/main/scala/org/apache/kyuubi/server/KyuubiTBinaryFrontendService.scala index 41cc513ef8f..5b8ae20b8a4 100644 --- a/kyuubi-server/src/main/scala/org/apache/kyuubi/server/KyuubiTBinaryFrontendService.scala +++ b/kyuubi-server/src/main/scala/org/apache/kyuubi/server/KyuubiTBinaryFrontendService.scala @@ -77,7 +77,7 @@ final class KyuubiTBinaryFrontendService( .map(_.asInstanceOf[KyuubiSessionImpl]) .flatMap(_.getSessionEvent).foreach { sessionEvent => sessionEvent.exception = Some(new KyuubiException( - s"Session between client and Kyuubi server disconnected without closing properly")) + s"Session between client and Kyuubi server disconnected without closing properly.")) EventBus.post(sessionEvent) } } From c95709284ae7e5820a77d78df937fd897e9391d3 Mon Sep 17 00:00:00 2001 From: "Wang, Fei" Date: Wed, 9 Apr 2025 00:00:40 -0700 Subject: [PATCH 4/4] do not post --- .../org/apache/kyuubi/server/KyuubiTBinaryFrontendService.scala | 2 -- 1 file changed, 2 deletions(-) diff --git a/kyuubi-server/src/main/scala/org/apache/kyuubi/server/KyuubiTBinaryFrontendService.scala b/kyuubi-server/src/main/scala/org/apache/kyuubi/server/KyuubiTBinaryFrontendService.scala index 5b8ae20b8a4..26de2784c9b 100644 --- a/kyuubi-server/src/main/scala/org/apache/kyuubi/server/KyuubiTBinaryFrontendService.scala +++ b/kyuubi-server/src/main/scala/org/apache/kyuubi/server/KyuubiTBinaryFrontendService.scala @@ -26,7 +26,6 @@ import org.apache.kyuubi.cli.Handle import org.apache.kyuubi.config.KyuubiConf import org.apache.kyuubi.config.KyuubiConf.KYUUBI_SERVER_THRIFT_RESULTSET_DEFAULT_FETCH_SIZE import org.apache.kyuubi.config.KyuubiReservedKeys._ -import org.apache.kyuubi.events.EventBus import org.apache.kyuubi.ha.client.{KyuubiServiceDiscovery, ServiceDiscovery} import org.apache.kyuubi.metrics.MetricsConstants._ import org.apache.kyuubi.metrics.MetricsSystem @@ -78,7 +77,6 @@ final class KyuubiTBinaryFrontendService( .flatMap(_.getSessionEvent).foreach { sessionEvent => sessionEvent.exception = Some(new KyuubiException( s"Session between client and Kyuubi server disconnected without closing properly.")) - EventBus.post(sessionEvent) } } super.deleteContext(serverContext, input, output)