You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kyuubi.apache.org by fe...@apache.org on 2023/03/15 06:03:39 UTC

[kyuubi] branch master updated: [KYUUBI #4518] Return engine id in SessionData and post kyuubi instance in KyuubiOperationEvent

This is an automated email from the ASF dual-hosted git repository.

feiwang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kyuubi.git


The following commit(s) were added to refs/heads/master by this push:
     new ba0eac70a [KYUUBI #4518] Return engine id in SessionData and post kyuubi instance in KyuubiOperationEvent
ba0eac70a is described below

commit ba0eac70abb3945f7c2006d87a403fb0c5e2890f
Author: fwang12 <fw...@ebay.com>
AuthorDate: Wed Mar 15 14:03:32 2023 +0800

    [KYUUBI #4518] Return engine id in SessionData and post kyuubi instance in KyuubiOperationEvent
    
    ### _Why are the changes needed?_
    
    As title.
    
    BTW, for KyuubiSessionEvents, you can get kyuubiInstance from serverIP.
    ```
     * param serverIP A unique Kyuubi server id, e.g. kyuubi server ip address and port,
     *                 it is useful if has multi-instance Kyuubi Server
     ```
    ### _How was this patch tested?_
    - [ ] Add some test cases that check the changes thoroughly including negative and positive cases if possible
    
    - [ ] Add screenshots for manual tests if appropriate
    
    - [ ] [Run test](https://kyuubi.readthedocs.io/en/master/develop_tools/testing.html#running-tests) locally before make a pull request
    
    Closes #4518 from turboFei/instance_follow.
    
    Closes #4518
    
    2ad4c1646 [fwang12] event
    
    Authored-by: fwang12 <fw...@ebay.com>
    Signed-off-by: fwang12 <fw...@ebay.com>
---
 .../org/apache/kyuubi/client/api/v1/dto/SessionData.java    | 13 ++++++++++++-
 .../org/apache/kyuubi/events/KyuubiOperationEvent.scala     |  7 +++++--
 .../main/scala/org/apache/kyuubi/server/api/ApiUtils.scala  |  6 ++++--
 3 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/kyuubi-rest-client/src/main/java/org/apache/kyuubi/client/api/v1/dto/SessionData.java b/kyuubi-rest-client/src/main/java/org/apache/kyuubi/client/api/v1/dto/SessionData.java
index ce5eaae50..ae7dfdec9 100644
--- a/kyuubi-rest-client/src/main/java/org/apache/kyuubi/client/api/v1/dto/SessionData.java
+++ b/kyuubi-rest-client/src/main/java/org/apache/kyuubi/client/api/v1/dto/SessionData.java
@@ -34,6 +34,7 @@ public class SessionData {
   private String exception;
   private String sessionType;
   private String kyuubiInstance;
+  private String engineId;
 
   public SessionData() {}
 
@@ -47,7 +48,8 @@ public class SessionData {
       Long idleTime,
       String exception,
       String sessionType,
-      String kyuubiInstance) {
+      String kyuubiInstance,
+      String engineId) {
     this.identifier = identifier;
     this.user = user;
     this.ipAddr = ipAddr;
@@ -58,6 +60,7 @@ public class SessionData {
     this.exception = exception;
     this.sessionType = sessionType;
     this.kyuubiInstance = kyuubiInstance;
+    this.engineId = engineId;
   }
 
   public String getIdentifier() {
@@ -143,6 +146,14 @@ public class SessionData {
     this.kyuubiInstance = kyuubiInstance;
   }
 
+  public String getEngineId() {
+    return engineId;
+  }
+
+  public void setEngineId(String engineId) {
+    this.engineId = engineId;
+  }
+
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;
diff --git a/kyuubi-server/src/main/scala/org/apache/kyuubi/events/KyuubiOperationEvent.scala b/kyuubi-server/src/main/scala/org/apache/kyuubi/events/KyuubiOperationEvent.scala
index 74a3a3fad..7147cb424 100644
--- a/kyuubi-server/src/main/scala/org/apache/kyuubi/events/KyuubiOperationEvent.scala
+++ b/kyuubi-server/src/main/scala/org/apache/kyuubi/events/KyuubiOperationEvent.scala
@@ -42,6 +42,7 @@ import org.apache.kyuubi.session.KyuubiSession
  * @param sessionId the identifier of the parent session
  * @param sessionUser the authenticated client user
  * @param sessionType the type of the parent session
+ * @param kyuubiInstance the parent session connection url
  */
 case class KyuubiOperationEvent private (
     statementId: String,
@@ -56,7 +57,8 @@ case class KyuubiOperationEvent private (
     exception: Option[Throwable],
     sessionId: String,
     sessionUser: String,
-    sessionType: String) extends KyuubiEvent {
+    sessionType: String,
+    kyuubiInstance: String) extends KyuubiEvent {
 
   // operation events are partitioned by the date when the corresponding operations are
   // created.
@@ -85,6 +87,7 @@ object KyuubiOperationEvent {
       status.exception,
       session.handle.identifier.toString,
       session.user,
-      session.sessionType.toString)
+      session.sessionType.toString,
+      session.connectionUrl)
   }
 }
diff --git a/kyuubi-server/src/main/scala/org/apache/kyuubi/server/api/ApiUtils.scala b/kyuubi-server/src/main/scala/org/apache/kyuubi/server/api/ApiUtils.scala
index 3e7e36eac..ebbf04c90 100644
--- a/kyuubi-server/src/main/scala/org/apache/kyuubi/server/api/ApiUtils.scala
+++ b/kyuubi-server/src/main/scala/org/apache/kyuubi/server/api/ApiUtils.scala
@@ -28,6 +28,7 @@ import org.apache.kyuubi.session.KyuubiSession
 object ApiUtils {
 
   def sessionData(session: KyuubiSession): SessionData = {
+    val sessionEvent = session.getSessionEvent
     new SessionData(
       session.handle.identifier.toString,
       session.user,
@@ -36,9 +37,10 @@ object ApiUtils {
       session.createTime,
       session.lastAccessTime - session.createTime,
       session.getNoOperationTime,
-      session.getSessionEvent.flatMap(_.exception).map(Utils.prettyPrint).getOrElse(""),
+      sessionEvent.flatMap(_.exception).map(Utils.prettyPrint).getOrElse(""),
       session.sessionType.toString,
-      session.connectionUrl)
+      session.connectionUrl,
+      sessionEvent.map(_.engineId).getOrElse(""))
   }
 
   def operationData(operation: KyuubiOperation): OperationData = {