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;
+ }
}