This is an automated email from the ASF dual-hosted git repository.
jshao pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/main by this push:
new f461cc7421 [#6756] fix (trino-connector): Fix the exception when the
Trino connector loads an unsupported catalog type. (#8058)
f461cc7421 is described below
commit f461cc742171325ff11327c028a478b0dd3e87da
Author: Yuhui <[email protected]>
AuthorDate: Tue Aug 19 17:10:48 2025 +0800
[#6756] fix (trino-connector): Fix the exception when the Trino connector
loads an unsupported catalog type. (#8058)
### What changes were proposed in this pull request?
Fix the exception when the Trino connector loads an unsupported catalog
type.
### Why are the changes needed?
Fix: #6756
### Does this PR introduce _any_ user-facing change?
No
### How was this patch tested?
Manually test
---
.../java/org/apache/gravitino/client/ObjectMapperProvider.java | 1 +
common/src/main/java/org/apache/gravitino/dto/CatalogDTO.java | 5 +++++
.../trino/connector/catalog/CatalogConnectorManager.java | 6 ++++++
.../gravitino/trino/connector/metadata/TestGravitinoCatalog.java | 9 +++++++++
4 files changed, 21 insertions(+)
diff --git
a/clients/client-java/src/main/java/org/apache/gravitino/client/ObjectMapperProvider.java
b/clients/client-java/src/main/java/org/apache/gravitino/client/ObjectMapperProvider.java
index 34f5007315..03b0cc3f4f 100644
---
a/clients/client-java/src/main/java/org/apache/gravitino/client/ObjectMapperProvider.java
+++
b/clients/client-java/src/main/java/org/apache/gravitino/client/ObjectMapperProvider.java
@@ -40,6 +40,7 @@ public class ObjectMapperProvider {
.configure(EnumFeature.WRITE_ENUMS_TO_LOWERCASE, true)
.enable(MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS)
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
+
.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, true)
.build()
.registerModule(new JavaTimeModule())
.registerModule(new Jdk8Module());
diff --git a/common/src/main/java/org/apache/gravitino/dto/CatalogDTO.java
b/common/src/main/java/org/apache/gravitino/dto/CatalogDTO.java
index 2724535b2b..d00c856212 100644
--- a/common/src/main/java/org/apache/gravitino/dto/CatalogDTO.java
+++ b/common/src/main/java/org/apache/gravitino/dto/CatalogDTO.java
@@ -18,6 +18,8 @@
*/
package org.apache.gravitino.dto;
+import static org.apache.gravitino.Catalog.Type.UNSUPPORTED;
+
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Preconditions;
import java.util.Map;
@@ -98,6 +100,9 @@ public class CatalogDTO implements Catalog {
*/
@Override
public Type type() {
+ if (type == null) {
+ return UNSUPPORTED;
+ }
return type;
}
diff --git
a/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/CatalogConnectorManager.java
b/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/CatalogConnectorManager.java
index f898a70916..3290cad867 100644
---
a/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/CatalogConnectorManager.java
+++
b/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/CatalogConnectorManager.java
@@ -243,6 +243,12 @@ public class CatalogConnectorManager {
loadCatalog(gravitinoCatalog);
}
}
+ } catch (UnsupportedOperationException e) {
+ LOG.warn(
+ "Unsupported catalog type for catalog {} in metalake {}:
{}",
+ catalogName,
+ metalake.name(),
+ e.getMessage());
} catch (Exception e) {
LOG.error(
"Failed to load metalake {}'s catalog {}.",
metalake.name(), catalogName, e);
diff --git
a/trino-connector/trino-connector/src/test/java/org/apache/gravitino/trino/connector/metadata/TestGravitinoCatalog.java
b/trino-connector/trino-connector/src/test/java/org/apache/gravitino/trino/connector/metadata/TestGravitinoCatalog.java
index e7e6404e2d..d5a42e3f8b 100644
---
a/trino-connector/trino-connector/src/test/java/org/apache/gravitino/trino/connector/metadata/TestGravitinoCatalog.java
+++
b/trino-connector/trino-connector/src/test/java/org/apache/gravitino/trino/connector/metadata/TestGravitinoCatalog.java
@@ -20,6 +20,7 @@ package org.apache.gravitino.trino.connector.metadata;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -30,6 +31,7 @@ import java.util.HashMap;
import java.util.Map;
import org.apache.gravitino.Audit;
import org.apache.gravitino.Catalog;
+import org.apache.gravitino.client.ObjectMapperProvider;
import org.junit.jupiter.api.Test;
public class TestGravitinoCatalog {
@@ -47,6 +49,13 @@ public class TestGravitinoCatalog {
assertEquals(catalog.getRegion(), "");
}
+ @Test
+ public void testUnSupportedCatalogType() throws Exception {
+ String json = "\"xxxx\"";
+ Catalog.Type t = ObjectMapperProvider.objectMapper().readValue(json,
Catalog.Type.class);
+ assertNull(t);
+ }
+
@Test
public void testCatalogWithClusterInfo() {
String catalogName = "mock";