This is an automated email from the ASF dual-hosted git repository. github-actions[bot] pushed a commit to branch cherry-pick-de8e0bb4-to-branch-1.3 in repository https://gitbox.apache.org/repos/asf/gravitino.git
commit 33778d39262bd60e68c834c56ef9908b7e934f77 Author: Shane <[email protected]> AuthorDate: Wed Jun 17 02:03:39 2026 +0800 [#11389] fix(core): use internal dispatchers for internal metadata loading (#11605) ### What changes were proposed in this pull request? This PR audits several internal metadata-loading paths and switches them from the regular dispatchers to internal dispatchers so they do not trigger user-visible hook/event/audit chains. The change includes: - Exposing internal dispatcher entry points in `GravitinoEnv` - Updating `AuthorizationUtils` to use internal catalog/schema/table/fileset dispatchers - Updating internal schema-loading paths in `TableOperationDispatcher`, `TopicOperationDispatcher`, and `ViewOperationDispatcher` - Updating Iceberg REST metadata import/sync paths to use internal dispatchers - Updating Ranger authorization plugin internal catalog/table lookups to use internal dispatchers - Adjusting unit tests so they verify the internal dispatcher paths are used ### Why are the changes needed? Some internal infrastructure/helper flows still loaded metadata through the regular dispatchers, which may go through normal hook/event/audit logic and produce misleading user-visible events for non-user-facing operations. This is especially problematic for: - authorization helper metadata lookups - Ranger policy translation/update flows - operation-dispatcher internal schema checks - Iceberg REST metadata synchronization/import These paths are internal implementation details and should use internal/no-event dispatchers instead of the regular user-facing dispatcher chain. Fix: #11389 ### Does this PR introduce _any_ user-facing change? No. This PR does not add or change user-facing APIs or configuration keys. It only changes internal metadata-loading paths so infrastructure operations no longer reuse the regular dispatcher chain. ### How was this patch tested? I added/updated unit tests covering the affected internal paths and ran targeted tests successfully. Executed verification: ```bash ./gradlew :core:test \ --tests org.apache.gravitino.authorization.TestAuthorizationUtils \ --tests org.apache.gravitino.catalog.TestTableOperationDispatcher \ --tests org.apache.gravitino.catalog.TestTopicOperationDispatcher \ --tests org.apache.gravitino.catalog.TestViewOperationDispatcher \ -PskipITs -PskipDockerTests=false ./gradlew :iceberg:iceberg-rest-server:test \ --tests org.apache.gravitino.iceberg.service.dispatcher.TestIcebergNamespaceHookDispatcher \ --tests org.apache.gravitino.iceberg.service.dispatcher.TestIcebergTableHookDispatcher \ --tests org.apache.gravitino.iceberg.service.dispatcher.TestIcebergViewHookDispatcher \ --tests org.apache.gravitino.iceberg.service.provider.TestDynamicIcebergConfigProvider \ -PskipITs -PskipDockerTests=false --- .../ranger/RangerAuthorizationHDFSPlugin.java | 10 +++---- .../test/RangerAuthorizationHDFSPluginIT.java | 18 +++++++++++- .../java/org/apache/gravitino/GravitinoEnv.java | 32 ++++++++++++++++++++++ .../authorization/AuthorizationUtils.java | 20 ++++++++------ .../catalog/TopicOperationDispatcher.java | 4 +-- .../authorization/TestAuthorizationUtils.java | 12 +++++--- .../catalog/TestTableOperationDispatcher.java | 5 ++-- .../catalog/TestTopicOperationDispatcher.java | 2 +- .../catalog/TestViewOperationDispatcher.java | 6 ++-- .../provider/TestDynamicIcebergConfigProvider.java | 2 -- 10 files changed, 84 insertions(+), 27 deletions(-) diff --git a/authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorizationHDFSPlugin.java b/authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorizationHDFSPlugin.java index c70344ba7d..82f731f526 100644 --- a/authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorizationHDFSPlugin.java +++ b/authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorizationHDFSPlugin.java @@ -550,7 +550,7 @@ public class RangerAuthorizationHDFSPlugin extends RangerAuthorizationPlugin { if (type == Entity.EntityType.METALAKE) { NameIdentifier[] catalogs = GravitinoEnv.getInstance() - .catalogDispatcher() + .internalCatalogDispatcher() .listCatalogs(Namespace.of(identifier.name())); for (NameIdentifier catalog : catalogs) { locations.addAll( @@ -592,7 +592,7 @@ public class RangerAuthorizationHDFSPlugin extends RangerAuthorizationPlugin { boolean recursive) { NameIdentifier[] catalogs = GravitinoEnv.getInstance() - .catalogDispatcher() + .internalCatalogDispatcher() .listCatalogs(Namespace.of(identifier.name())); for (NameIdentifier catalog : catalogs) { AuthorizationUtils.getMetadataObjectLocation(catalog, Entity.EntityType.CATALOG) @@ -668,7 +668,7 @@ public class RangerAuthorizationHDFSPlugin extends RangerAuthorizationPlugin { if (metadataObject.type() == MetadataObject.Type.METALAKE) { NameIdentifier[] catalogs = GravitinoEnv.getInstance() - .catalogDispatcher() + .internalCatalogDispatcher() .listCatalogs(Namespace.of(identifier.name())); for (NameIdentifier catalog : catalogs) { locations.addAll( @@ -723,11 +723,11 @@ public class RangerAuthorizationHDFSPlugin extends RangerAuthorizationPlugin { NameIdentifier ident = MetadataObjectUtil.toEntityIdent(metalake, newMetadataObject); NameIdentifier catalogIdent = NameIdentifierUtil.getCatalogIdentifier(ident); if (GravitinoEnv.getInstance() - .catalogDispatcher() + .internalCatalogDispatcher() .loadCatalog(catalogIdent) .provider() .equals("hive")) { - Table table = GravitinoEnv.getInstance().tableDispatcher().loadTable(ident); + Table table = GravitinoEnv.getInstance().internalTableDispatcher().loadTable(ident); if (table.properties().get("table-type").equals("EXTERNAL_TABLE")) { continue; } diff --git a/authorizations/authorization-ranger/src/test/java/org/apache/gravitino/authorization/ranger/integration/test/RangerAuthorizationHDFSPluginIT.java b/authorizations/authorization-ranger/src/test/java/org/apache/gravitino/authorization/ranger/integration/test/RangerAuthorizationHDFSPluginIT.java index 2ec989a23e..be81b39003 100644 --- a/authorizations/authorization-ranger/src/test/java/org/apache/gravitino/authorization/ranger/integration/test/RangerAuthorizationHDFSPluginIT.java +++ b/authorizations/authorization-ranger/src/test/java/org/apache/gravitino/authorization/ranger/integration/test/RangerAuthorizationHDFSPluginIT.java @@ -53,17 +53,33 @@ public class RangerAuthorizationHDFSPluginIT { private static RangerAuthorizationPlugin rangerAuthPlugin; private static final CatalogDispatcher manager = mock(CatalogDispatcher.class); + private static CatalogDispatcher previousCatalogDispatcher; + private static CatalogDispatcher previousInternalCatalogDispatcher; @BeforeAll public static void setup() throws Exception { RangerITEnv.init(RangerITEnv.currentFunName(), true); rangerAuthPlugin = RangerITEnv.rangerAuthHDFSPlugin; + previousCatalogDispatcher = + (CatalogDispatcher) + FieldUtils.readField(GravitinoEnv.getInstance(), "catalogDispatcher", true); + previousInternalCatalogDispatcher = + (CatalogDispatcher) + FieldUtils.readField(GravitinoEnv.getInstance(), "internalCatalogDispatcher", true); FieldUtils.writeField(GravitinoEnv.getInstance(), "catalogDispatcher", manager, true); + FieldUtils.writeField(GravitinoEnv.getInstance(), "internalCatalogDispatcher", manager, true); when(manager.listCatalogs(any())).thenReturn(new NameIdentifier[0]); } @AfterAll - public static void cleanup() { + public static void cleanup() throws IllegalAccessException { + FieldUtils.writeField( + GravitinoEnv.getInstance(), "catalogDispatcher", previousCatalogDispatcher, true); + FieldUtils.writeField( + GravitinoEnv.getInstance(), + "internalCatalogDispatcher", + previousInternalCatalogDispatcher, + true); RangerITEnv.cleanup(); } diff --git a/core/src/main/java/org/apache/gravitino/GravitinoEnv.java b/core/src/main/java/org/apache/gravitino/GravitinoEnv.java index 700e187b89..11c1291129 100644 --- a/core/src/main/java/org/apache/gravitino/GravitinoEnv.java +++ b/core/src/main/java/org/apache/gravitino/GravitinoEnv.java @@ -137,8 +137,12 @@ public class GravitinoEnv { private FilesetDispatcher filesetDispatcher; + private FilesetDispatcher internalFilesetDispatcher; + private TopicDispatcher topicDispatcher; + private TopicDispatcher internalTopicDispatcher; + private ModelDispatcher modelDispatcher; private FunctionDispatcher functionDispatcher; @@ -365,6 +369,17 @@ public class GravitinoEnv { return filesetDispatcher; } + /** + * Get the internal FilesetDispatcher associated with the Gravitino environment. + * + * @return The internal FilesetDispatcher instance. + */ + public FilesetDispatcher internalFilesetDispatcher() { + Preconditions.checkArgument( + internalFilesetDispatcher != null, "GravitinoEnv is not initialized."); + return internalFilesetDispatcher; + } + /** * Get the TopicDispatcher associated with the Gravitino environment. * @@ -374,6 +389,17 @@ public class GravitinoEnv { return topicDispatcher; } + /** + * Get the internal TopicDispatcher associated with the Gravitino environment. + * + * @return The internal TopicDispatcher instance. + */ + public TopicDispatcher internalTopicDispatcher() { + Preconditions.checkArgument( + internalTopicDispatcher != null, "GravitinoEnv is not initialized."); + return internalTopicDispatcher; + } + /** * Get the MetalakeDispatcher associated with the Gravitino environment. * @@ -652,6 +678,7 @@ public class GravitinoEnv { // CatalogManager registers its own change-log listener with the entity store (when the store // supports it), so no poller wiring is needed here. this.catalogManager = new CatalogManager(config, entityStore, idGenerator); + this.internalCatalogDispatcher = catalogManager; CatalogNormalizeDispatcher catalogNormalizeDispatcher = new CatalogNormalizeDispatcher(catalogManager); this.internalCatalogDispatcher = catalogNormalizeDispatcher; @@ -664,6 +691,7 @@ public class GravitinoEnv { SchemaOperationDispatcher schemaOperationDispatcher = new SchemaOperationDispatcher(catalogManager, entityStore, idGenerator); + this.internalSchemaDispatcher = schemaOperationDispatcher; SchemaNormalizeDispatcher schemaNormalizeDispatcher = new SchemaNormalizeDispatcher(schemaOperationDispatcher, catalogManager); this.internalSchemaDispatcher = schemaNormalizeDispatcher; @@ -673,6 +701,7 @@ public class GravitinoEnv { TableOperationDispatcher tableOperationDispatcher = new TableOperationDispatcher(catalogManager, entityStore, idGenerator); + this.internalTableDispatcher = tableOperationDispatcher; TableNormalizeDispatcher tableNormalizeDispatcher = new TableNormalizeDispatcher(tableOperationDispatcher, catalogManager); TableOperationDispatcher internalTableOperationDispatcher = @@ -696,6 +725,7 @@ public class GravitinoEnv { new FilesetOperationDispatcher(catalogManager, entityStore, idGenerator); FilesetNormalizeDispatcher filesetNormalizeDispatcher = new FilesetNormalizeDispatcher(filesetOperationDispatcher, catalogManager); + this.internalFilesetDispatcher = filesetNormalizeDispatcher; FilesetEventDispatcher filesetEventDispatcher = new FilesetEventDispatcher(eventBus, filesetNormalizeDispatcher); this.filesetDispatcher = new FilesetHookDispatcher(filesetEventDispatcher); @@ -704,6 +734,7 @@ public class GravitinoEnv { new TopicOperationDispatcher(catalogManager, entityStore, idGenerator); TopicNormalizeDispatcher topicNormalizeDispatcher = new TopicNormalizeDispatcher(topicOperationDispatcher, catalogManager); + this.internalTopicDispatcher = topicNormalizeDispatcher; TopicEventDispatcher topicEventDispatcher = new TopicEventDispatcher(eventBus, topicNormalizeDispatcher); this.topicDispatcher = new TopicHookDispatcher(topicEventDispatcher); @@ -734,6 +765,7 @@ public class GravitinoEnv { // privilege support is finalized. ViewOperationDispatcher viewOperationDispatcher = new ViewOperationDispatcher(catalogManager, entityStore, idGenerator); + this.internalViewDispatcher = viewOperationDispatcher; ViewNormalizeDispatcher viewNormalizeDispatcher = new ViewNormalizeDispatcher(viewOperationDispatcher, catalogManager); ViewOperationDispatcher internalViewOperationDispatcher = diff --git a/core/src/main/java/org/apache/gravitino/authorization/AuthorizationUtils.java b/core/src/main/java/org/apache/gravitino/authorization/AuthorizationUtils.java index 2f5518ad84..7ac6008c1d 100644 --- a/core/src/main/java/org/apache/gravitino/authorization/AuthorizationUtils.java +++ b/core/src/main/java/org/apache/gravitino/authorization/AuthorizationUtils.java @@ -471,7 +471,8 @@ public class AuthorizationUtils { private static void checkCatalogType( NameIdentifier catalogIdent, Catalog.Type type, Privilege privilege) { - Catalog catalog = GravitinoEnv.getInstance().catalogDispatcher().loadCatalog(catalogIdent); + Catalog catalog = + GravitinoEnv.getInstance().internalCatalogDispatcher().loadCatalog(catalogIdent); if (catalog.type() != type) { throw new IllegalPrivilegeException( "Catalog %s type %s doesn't support privilege %s", @@ -505,7 +506,8 @@ public class AuthorizationUtils { private static String getHiveDefaultLocation(String metalakeName, String catalogName) { NameIdentifier defaultSchemaIdent = NameIdentifier.of(metalakeName, catalogName, "default" /*Hive default schema*/); - Schema schema = GravitinoEnv.getInstance().schemaDispatcher().loadSchema(defaultSchemaIdent); + Schema schema = + GravitinoEnv.getInstance().internalSchemaDispatcher().loadSchema(defaultSchemaIdent); if (schema.properties().containsKey(HiveConstants.LOCATION)) { String defaultSchemaLocation = schema.properties().get(HiveConstants.LOCATION); if (defaultSchemaLocation != null && !defaultSchemaLocation.isEmpty()) { @@ -533,7 +535,8 @@ public class AuthorizationUtils { break; case CATALOG: { - Catalog catalogObj = GravitinoEnv.getInstance().catalogDispatcher().loadCatalog(ident); + Catalog catalogObj = + GravitinoEnv.getInstance().internalCatalogDispatcher().loadCatalog(ident); if (catalogObj.provider().equals("hive")) { // The Hive default schema location is Hive warehouse directory String defaultSchemaLocation = @@ -547,10 +550,10 @@ public class AuthorizationUtils { case SCHEMA: Catalog catalogObj = GravitinoEnv.getInstance() - .catalogDispatcher() + .internalCatalogDispatcher() .loadCatalog( NameIdentifier.of(ident.namespace().level(0), ident.namespace().level(1))); - Schema schema = GravitinoEnv.getInstance().schemaDispatcher().loadSchema(ident); + Schema schema = GravitinoEnv.getInstance().internalSchemaDispatcher().loadSchema(ident); switch (catalogObj.type()) { case RELATIONAL: @@ -594,11 +597,11 @@ public class AuthorizationUtils { { catalogObj = GravitinoEnv.getInstance() - .catalogDispatcher() + .internalCatalogDispatcher() .loadCatalog( NameIdentifier.of(ident.namespace().level(0), ident.namespace().level(1))); if (catalogObj.provider().equals("hive")) { - Table table = GravitinoEnv.getInstance().tableDispatcher().loadTable(ident); + Table table = GravitinoEnv.getInstance().internalTableDispatcher().loadTable(ident); if (table.properties().containsKey(HiveConstants.LOCATION)) { String tableLocation = table.properties().get(HiveConstants.LOCATION); if (StringUtils.isNotBlank(tableLocation)) { @@ -611,7 +614,8 @@ public class AuthorizationUtils { } break; case FILESET: - FilesetDispatcher filesetDispatcher = GravitinoEnv.getInstance().filesetDispatcher(); + FilesetDispatcher filesetDispatcher = + GravitinoEnv.getInstance().internalFilesetDispatcher(); Fileset fileset = filesetDispatcher.loadFileset(ident); Preconditions.checkArgument( fileset != null, String.format("Fileset %s is not found", ident)); diff --git a/core/src/main/java/org/apache/gravitino/catalog/TopicOperationDispatcher.java b/core/src/main/java/org/apache/gravitino/catalog/TopicOperationDispatcher.java index 63711a393c..c68f33c682 100644 --- a/core/src/main/java/org/apache/gravitino/catalog/TopicOperationDispatcher.java +++ b/core/src/main/java/org/apache/gravitino/catalog/TopicOperationDispatcher.java @@ -98,7 +98,7 @@ public class TopicOperationDispatcher extends OperationDispatcher implements Top if (!topic.imported()) { // Load the schema to make sure the schema is imported. // This is not necessary for Kafka catalogs. - SchemaDispatcher schemaDispatcher = GravitinoEnv.getInstance().schemaDispatcher(); + SchemaDispatcher schemaDispatcher = GravitinoEnv.getInstance().internalSchemaDispatcher(); NameIdentifier schemaIdent = NameIdentifier.of(ident.namespace().levels()); schemaDispatcher.loadSchema(schemaIdent); @@ -134,7 +134,7 @@ public class TopicOperationDispatcher extends OperationDispatcher implements Top throws NoSuchSchemaException, TopicAlreadyExistsException { // Load the schema to make sure the schema exists. - SchemaDispatcher schemaDispatcher = GravitinoEnv.getInstance().schemaDispatcher(); + SchemaDispatcher schemaDispatcher = GravitinoEnv.getInstance().internalSchemaDispatcher(); NameIdentifier schemaIdent = NameIdentifier.of(ident.namespace().levels()); schemaDispatcher.loadSchema(schemaIdent); diff --git a/core/src/test/java/org/apache/gravitino/authorization/TestAuthorizationUtils.java b/core/src/test/java/org/apache/gravitino/authorization/TestAuthorizationUtils.java index e27b68bb91..c0ae444eb0 100644 --- a/core/src/test/java/org/apache/gravitino/authorization/TestAuthorizationUtils.java +++ b/core/src/test/java/org/apache/gravitino/authorization/TestAuthorizationUtils.java @@ -240,8 +240,10 @@ class TestAuthorizationUtils { Mockito.when(catalogDispatcher.loadCatalog(Mockito.any())).thenReturn(catalog); Mockito.when(tableDispatcher.loadTable(Mockito.any())).thenReturn(table); - FieldUtils.writeField(GravitinoEnv.getInstance(), "catalogDispatcher", catalogDispatcher, true); - FieldUtils.writeField(GravitinoEnv.getInstance(), "tableDispatcher", tableDispatcher, true); + FieldUtils.writeField( + GravitinoEnv.getInstance(), "internalCatalogDispatcher", catalogDispatcher, true); + FieldUtils.writeField( + GravitinoEnv.getInstance(), "internalTableDispatcher", tableDispatcher, true); FieldUtils.writeField( GravitinoEnv.getInstance(), "accessControlDispatcher", accessControlDispatcher, true); @@ -276,8 +278,10 @@ class TestAuthorizationUtils { FieldUtils.writeField( GravitinoEnv.getInstance(), "accessControlDispatcher", accessControlDispatcher, true); - FieldUtils.writeField(GravitinoEnv.getInstance(), "catalogDispatcher", catalogDispatcher, true); - FieldUtils.writeField(GravitinoEnv.getInstance(), "schemaDispatcher", schemaDispatcher, true); + FieldUtils.writeField( + GravitinoEnv.getInstance(), "internalCatalogDispatcher", catalogDispatcher, true); + FieldUtils.writeField( + GravitinoEnv.getInstance(), "internalSchemaDispatcher", schemaDispatcher, true); List<String> locations = AuthorizationUtils.getMetadataObjectLocation( diff --git a/core/src/test/java/org/apache/gravitino/catalog/TestTableOperationDispatcher.java b/core/src/test/java/org/apache/gravitino/catalog/TestTableOperationDispatcher.java index 36c142cc4f..260d23a4c0 100644 --- a/core/src/test/java/org/apache/gravitino/catalog/TestTableOperationDispatcher.java +++ b/core/src/test/java/org/apache/gravitino/catalog/TestTableOperationDispatcher.java @@ -82,7 +82,8 @@ public class TestTableOperationDispatcher extends TestOperationDispatcher { schemaOperationDispatcher = new SchemaOperationDispatcher(catalogManager, entityStore, idGenerator); tableOperationDispatcher = - new TableOperationDispatcher(catalogManager, entityStore, idGenerator); + new TableOperationDispatcher( + catalogManager, entityStore, idGenerator, () -> schemaOperationDispatcher); Config config = mock(Config.class); doReturn(100000L).when(config).get(TREE_LOCK_MAX_NODE_IN_MEMORY); @@ -90,7 +91,7 @@ public class TestTableOperationDispatcher extends TestOperationDispatcher { doReturn(36000L).when(config).get(TREE_LOCK_CLEAN_INTERVAL); FieldUtils.writeField(GravitinoEnv.getInstance(), "lockManager", new LockManager(config), true); FieldUtils.writeField( - GravitinoEnv.getInstance(), "schemaDispatcher", schemaOperationDispatcher, true); + GravitinoEnv.getInstance(), "internalSchemaDispatcher", schemaOperationDispatcher, true); } @Test diff --git a/core/src/test/java/org/apache/gravitino/catalog/TestTopicOperationDispatcher.java b/core/src/test/java/org/apache/gravitino/catalog/TestTopicOperationDispatcher.java index 0aea8c6604..50055ef183 100644 --- a/core/src/test/java/org/apache/gravitino/catalog/TestTopicOperationDispatcher.java +++ b/core/src/test/java/org/apache/gravitino/catalog/TestTopicOperationDispatcher.java @@ -76,7 +76,7 @@ public class TestTopicOperationDispatcher extends TestOperationDispatcher { doReturn(36000L).when(config).get(TREE_LOCK_CLEAN_INTERVAL); FieldUtils.writeField(GravitinoEnv.getInstance(), "lockManager", new LockManager(config), true); FieldUtils.writeField( - GravitinoEnv.getInstance(), "schemaDispatcher", schemaOperationDispatcher, true); + GravitinoEnv.getInstance(), "internalSchemaDispatcher", schemaOperationDispatcher, true); } @Test diff --git a/core/src/test/java/org/apache/gravitino/catalog/TestViewOperationDispatcher.java b/core/src/test/java/org/apache/gravitino/catalog/TestViewOperationDispatcher.java index 7f75fe1984..8f5b0403f1 100644 --- a/core/src/test/java/org/apache/gravitino/catalog/TestViewOperationDispatcher.java +++ b/core/src/test/java/org/apache/gravitino/catalog/TestViewOperationDispatcher.java @@ -73,7 +73,9 @@ public class TestViewOperationDispatcher extends TestOperationDispatcher { public static void initialize() throws IOException, IllegalAccessException { schemaOperationDispatcher = new SchemaOperationDispatcher(catalogManager, entityStore, idGenerator); - viewOperationDispatcher = new ViewOperationDispatcher(catalogManager, entityStore, idGenerator); + viewOperationDispatcher = + new ViewOperationDispatcher( + catalogManager, entityStore, idGenerator, () -> schemaOperationDispatcher); Config config = mock(Config.class); doReturn(100000L).when(config).get(TREE_LOCK_MAX_NODE_IN_MEMORY); @@ -81,7 +83,7 @@ public class TestViewOperationDispatcher extends TestOperationDispatcher { doReturn(36000L).when(config).get(TREE_LOCK_CLEAN_INTERVAL); FieldUtils.writeField(GravitinoEnv.getInstance(), "lockManager", new LockManager(config), true); FieldUtils.writeField( - GravitinoEnv.getInstance(), "schemaDispatcher", schemaOperationDispatcher, true); + GravitinoEnv.getInstance(), "internalSchemaDispatcher", schemaOperationDispatcher, true); } public static ViewOperationDispatcher getViewOperationDispatcher() { diff --git a/iceberg/iceberg-rest-server/src/test/java/org/apache/gravitino/iceberg/service/provider/TestDynamicIcebergConfigProvider.java b/iceberg/iceberg-rest-server/src/test/java/org/apache/gravitino/iceberg/service/provider/TestDynamicIcebergConfigProvider.java index 93f5be1b5f..d5b2024152 100644 --- a/iceberg/iceberg-rest-server/src/test/java/org/apache/gravitino/iceberg/service/provider/TestDynamicIcebergConfigProvider.java +++ b/iceberg/iceberg-rest-server/src/test/java/org/apache/gravitino/iceberg/service/provider/TestDynamicIcebergConfigProvider.java @@ -62,7 +62,6 @@ public class TestDynamicIcebergConfigProvider { @AfterEach public void tearDown() throws IllegalAccessException { // Clean up GravitinoEnv and IcebergRESTServerContext state after each test - FieldUtils.writeField(GravitinoEnv.getInstance(), "catalogDispatcher", null, true); FieldUtils.writeField(GravitinoEnv.getInstance(), "internalCatalogDispatcher", null, true); resetServerContext(); } @@ -371,7 +370,6 @@ public class TestDynamicIcebergConfigProvider { createMockServerContext(true); // Ensure internal CatalogDispatcher is null (simulating GravitinoEnv not initialized) - FieldUtils.writeField(GravitinoEnv.getInstance(), "catalogDispatcher", null, true); FieldUtils.writeField(GravitinoEnv.getInstance(), "internalCatalogDispatcher", null, true); // Initialize provider with required properties
