This is an automated email from the ASF dual-hosted git repository. diqiu50 pushed a commit to branch trino-irc-1.3 in repository https://gitbox.apache.org/repos/asf/gravitino.git
commit 547fd665b2cb07c6ca7341a7ddd30291befb8e15 Merge: 9544a184db 5ccc043452 Author: yuhui <[email protected]> AuthorDate: Fri Aug 28 02:33:16 2026 +0000 Merge branch 'trino-err2' into trino-irc-1.3 # Conflicts: # trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/GravitinoConnectorFactory.java docs/trino-connector/supported-catalog.md | 80 ++++ .../testsets/jdbc-mysql/00015_catalog_status.sql | 3 + .../testsets/jdbc-mysql/00015_catalog_status.txt | 3 + .../connector/GravitinoConnectorFactory440.java | 6 +- .../connector/GravitinoSystemConnector440.java | 12 +- .../connector/GravitinoConnectorFactory446.java | 6 +- .../connector/GravitinoSystemConnector446.java | 12 +- .../connector/GravitinoConnectorFactory452.java | 6 +- .../connector/GravitinoSystemConnector452.java | 12 +- .../connector/GravitinoConnectorFactory469.java | 6 +- .../connector/GravitinoSystemConnector469.java | 12 +- .../connector/GravitinoConnectorFactory478.java | 6 +- .../connector/GravitinoSystemConnector478.java | 12 +- .../trino/connector/GravitinoConnectorFactory.java | 52 ++- .../connector/catalog/CatalogConnectorManager.java | 410 ++++++++++++++++--- .../trino/connector/catalog/CatalogRegister.java | 18 +- .../catalog/CatalogRegistrationState.java | 299 ++++++++++++++ .../connector/system/GravitinoSystemConnector.java | 65 ++- .../system/GravitinoSystemConnectorMetadata.java | 25 +- .../AlterCatalogStoredProcedure.java | 8 +- .../CreateCatalogStoredProcedure.java | 7 +- .../system/table/GravitinoSystemTable.java | 35 ++ .../system/table/GravitinoSystemTableCatalog.java | 16 +- .../table/GravitinoSystemTableCatalogStatus.java | 125 ++++++ .../system/table/GravitinoSystemTableFactory.java | 56 ++- .../table/GravitinoSystemTableLoadStatus.java | 131 ++++++ .../trino/connector/TestGravitinoConnector.java | 49 ++- .../TestGravitinoConnectorFactoryInit.java | 70 ++++ .../TestGravitinoConnectorFactoryStart.java | 18 +- .../catalog/TestCatalogConnectorManager.java | 438 +++++++++++++++++++++ .../system/TestGravitinoSystemConnector.java | 46 +++ .../table/TestGravitinoSystemStatusTables.java | 164 ++++++++ 32 files changed, 2078 insertions(+), 130 deletions(-) diff --cc trino-connector/trino-connector/src/test/java/org/apache/gravitino/trino/connector/TestGravitinoConnectorFactoryStart.java index cc189815df,b104b4d509..981caccac0 --- a/trino-connector/trino-connector/src/test/java/org/apache/gravitino/trino/connector/TestGravitinoConnectorFactoryStart.java +++ b/trino-connector/trino-connector/src/test/java/org/apache/gravitino/trino/connector/TestGravitinoConnectorFactoryStart.java @@@ -27,6 -26,6 +27,9 @@@ import static org.mockito.Mockito.mock import static org.mockito.Mockito.when; import com.google.common.collect.ImmutableMap; ++import io.trino.spi.HostAddress; ++import io.trino.spi.Node; ++import io.trino.spi.NodeManager; import io.trino.spi.connector.ConnectorContext; import java.nio.file.Path; import java.util.HashMap; @@@ -68,9 -67,9 +71,16 @@@ public class TestGravitinoConnectorFact return config; } ++ @SuppressWarnings("deprecation") private static ConnectorContext mockContext() { ConnectorContext context = mock(ConnectorContext.class); when(context.getSpiVersion()).thenReturn("478"); ++ Node node = mock(Node.class); ++ when(node.isCoordinator()).thenReturn(true); ++ when(node.getHostAndPort()).thenReturn(HostAddress.fromParts("127.0.0.1", 8080)); ++ NodeManager nodeManager = mock(NodeManager.class); ++ when(nodeManager.getCurrentNode()).thenReturn(node); ++ when(context.getNodeManager()).thenReturn(nodeManager); return context; } @@@ -129,31 -128,16 +139,31 @@@ } @Test - public void testStartIsAttemptedOnlyOnce() { + public void testFailedClientInitializationDoesNotPublishManager() { + CoordinatorFactory factory = new CoordinatorFactory(null); + Map<String, String> brokenDynamicConfig = dynamicConfig(); + brokenDynamicConfig.put("gravitino.client.authType", "oauth2"); + + assertThrows( + Exception.class, + () -> factory.create("broken_catalog", brokenDynamicConfig, mockContext())); + + assertNull(factory.getCatalogConnectorManager()); + assertNotNull(factory.create("gravitino", staticConfig(), mockContext())); + assertTrue(factory.isCatalogConnectorManagerStartTriggered()); + } + + @Test - public void testStartIsAttemptedOnlyOnce() { ++ public void testFailedStartIsRetried() { CoordinatorFactory factory = newFactory(); Map<String, String> brokenConfig = staticConfig(); brokenConfig.put("catalog.config-dir", "/not/exists/catalog"); assertThrows(Exception.class, () -> factory.create("gravitino", brokenConfig, mockContext())); -- // Everything that makes start() fail is a configuration error, so the next create() must not -- // try again: a second init() would open another connection and abandon the first one. -- assertNotNull(factory.create("gravitino", brokenConfig, mockContext())); ++ // A failed initialization must not leave the shared manager marked as started. A later create ++ // retries initialization so a corrected configuration can recover without restarting Trino. ++ assertThrows(Exception.class, () -> factory.create("gravitino", brokenConfig, mockContext())); } @Test
