diff --git a/kyuubi-server/src/main/scala/org/apache/kyuubi/session/KyuubiSessionImpl.scala b/kyuubi-server/src/main/scala/org/apache/kyuubi/session/KyuubiSessionImpl.scala index 536034b9cdd..ce94b027596 100644 --- a/kyuubi-server/src/main/scala/org/apache/kyuubi/session/KyuubiSessionImpl.scala +++ b/kyuubi-server/src/main/scala/org/apache/kyuubi/session/KyuubiSessionImpl.scala @@ -105,6 +105,8 @@ class KyuubiSessionImpl( private var _engineSessionHandle: SessionHandle = _ + private var openSessionError: Option[Throwable] = None + override def open(): Unit = handleSessionException { traceMetricsOnOpen() @@ -170,6 +172,7 @@ class KyuubiSessionImpl( s"Opening engine [${engine.defaultEngineName} $host:$port]" + s" for $user session failed", e) + openSessionError = Some(e) throw e } finally { attempt += 1 @@ -247,7 +250,7 @@ class KyuubiSessionImpl( try { if (_client != null) _client.closeSession() } finally { - if (engine != null) engine.close() + openSessionError.foreach { _ => if (engine != null) engine.close() } sessionEvent.endTime = System.currentTimeMillis() EventBus.post(sessionEvent) traceMetricsOnClose()