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

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


The following commit(s) were added to refs/heads/master by this push:
     new a9a624f53 [AMORO-2823] update catalog meta and corresponding terminal 
session (#2824)
a9a624f53 is described below

commit a9a624f53d2349b0e49e0e0005937336ae022d07
Author: Xavier Bai <[email protected]>
AuthorDate: Sat May 11 13:27:27 2024 +0800

    [AMORO-2823] update catalog meta and corresponding terminal session (#2824)
    
    * update catalog meta and corresponding terminal session
    
    * fill catalog-impl for glue when build server catalog
---
 .../dashboard/controller/CatalogController.java     | 14 +++++++++-----
 .../amoro/server/terminal/TerminalManager.java      | 21 ++++++++++++++-------
 .../server/terminal/TerminalSessionContext.java     |  4 ++++
 3 files changed, 27 insertions(+), 12 deletions(-)

diff --git 
a/amoro-ams/amoro-ams-server/src/main/java/org/apache/amoro/server/dashboard/controller/CatalogController.java
 
b/amoro-ams/amoro-ams-server/src/main/java/org/apache/amoro/server/dashboard/controller/CatalogController.java
index 6b15ae7f1..20e2c6004 100644
--- 
a/amoro-ams/amoro-ams-server/src/main/java/org/apache/amoro/server/dashboard/controller/CatalogController.java
+++ 
b/amoro-ams/amoro-ams-server/src/main/java/org/apache/amoro/server/dashboard/controller/CatalogController.java
@@ -68,6 +68,7 @@ import org.apache.amoro.utils.MixedCatalogUtil;
 import org.apache.commons.lang.StringUtils;
 import org.apache.iceberg.CatalogProperties;
 import org.apache.iceberg.aws.AwsClientProperties;
+import org.apache.iceberg.aws.glue.GlueCatalog;
 import org.apache.iceberg.aws.s3.S3FileIOProperties;
 import org.apache.iceberg.relocated.com.google.common.base.Objects;
 import org.apache.iceberg.relocated.com.google.common.base.Preconditions;
@@ -353,11 +354,14 @@ public class CatalogController {
     catalogMeta.setCatalogType(info.getType());
     catalogMeta.setCatalogProperties(
         PropertiesUtil.unionCatalogProperties(info.getTableProperties(), 
info.getProperties()));
-    catalogMeta
-        .getCatalogProperties()
-        .put(
-            CatalogMetaProperties.TABLE_PROPERTIES_PREFIX + 
TableProperties.SELF_OPTIMIZING_GROUP,
-            info.getOptimizerGroup());
+    // fill catalog impl when catalog type is glue
+    if (CatalogMetaProperties.CATALOG_TYPE_GLUE.equals(info.getType())) {
+      catalogMeta.putToCatalogProperties(
+          CatalogProperties.CATALOG_IMPL, GlueCatalog.class.getName());
+    }
+    catalogMeta.putToCatalogProperties(
+        CatalogMetaProperties.TABLE_PROPERTIES_PREFIX + 
TableProperties.SELF_OPTIMIZING_GROUP,
+        info.getOptimizerGroup());
     String tableFormats;
     try {
       // validate table format
diff --git 
a/amoro-ams/amoro-ams-server/src/main/java/org/apache/amoro/server/terminal/TerminalManager.java
 
b/amoro-ams/amoro-ams-server/src/main/java/org/apache/amoro/server/terminal/TerminalManager.java
index 3e0efab85..80267c129 100644
--- 
a/amoro-ams/amoro-ams-server/src/main/java/org/apache/amoro/server/terminal/TerminalManager.java
+++ 
b/amoro-ams/amoro-ams-server/src/main/java/org/apache/amoro/server/terminal/TerminalManager.java
@@ -121,17 +121,24 @@ public class TerminalManager {
           TerminalSessionFactory.SessionConfigOptions.catalogProperty(catalog, 
key), value);
     }
 
-    TerminalSessionContext context;
     synchronized (sessionMapLock) {
-      sessionMap.computeIfAbsent(
+      sessionMap.compute(
           sessionId,
-          id ->
-              new TerminalSessionContext(
-                  id, metaStore, executionPool, sessionFactory, 
configuration));
-
-      context = sessionMap.get(sessionId);
+          (id, ctx) -> {
+            if (ctx == null) {
+              return new TerminalSessionContext(
+                  id, metaStore, executionPool, sessionFactory, configuration);
+            } else {
+              // need to re-create session context if configuration is changed
+              return ctx.sessionConfiguration().equals(configuration)
+                  ? ctx
+                  : new TerminalSessionContext(
+                      id, metaStore, executionPool, sessionFactory, 
configuration);
+            }
+          });
     }
 
+    TerminalSessionContext context = sessionMap.get(sessionId);
     if (!context.isReadyToExecute()) {
       throw new IllegalStateException(
           "current session is not ready to execute script. status:" + 
context.getStatus());
diff --git 
a/amoro-ams/amoro-ams-server/src/main/java/org/apache/amoro/server/terminal/TerminalSessionContext.java
 
b/amoro-ams/amoro-ams-server/src/main/java/org/apache/amoro/server/terminal/TerminalSessionContext.java
index 3967d4a39..3e3e22c1b 100644
--- 
a/amoro-ams/amoro-ams-server/src/main/java/org/apache/amoro/server/terminal/TerminalSessionContext.java
+++ 
b/amoro-ams/amoro-ams-server/src/main/java/org/apache/amoro/server/terminal/TerminalSessionContext.java
@@ -340,4 +340,8 @@ public class TerminalSessionContext {
       return new String(out.toByteArray(), Charsets.UTF_8);
     }
   }
+
+  public Configurations sessionConfiguration() {
+    return sessionConfiguration;
+  }
 }

Reply via email to