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

czy006 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 48457b7ec [Hotfix] Fix optimizer group not updated on table refresh 
(#4076)
48457b7ec is described below

commit 48457b7ecf1194f086c0f273807a7d6bebb5e16a
Author: Jiwon Park <[email protected]>
AuthorDate: Tue Feb 10 11:56:40 2026 +0900

    [Hotfix] Fix optimizer group not updated on table refresh (#4076)
    
    * [Hotfix] Fix optimizer group not updated on table refresh
    
    Signed-off-by: j1wonpark <[email protected]>
    
    * Remove unused configChanged variable in DefaultTableRuntime.refresh()
    
    Signed-off-by: [email protected]
    Signed-off-by: Jiwon Park <[email protected]>
    
    ---------
    
    Signed-off-by: j1wonpark <[email protected]>
    Signed-off-by: [email protected]
    Signed-off-by: Jiwon Park <[email protected]>
---
 .../amoro/server/table/DefaultTableRuntime.java    |  7 ++--
 .../table/TestDefaultTableRuntimeHandler.java      | 43 ++++++++++++++++++++++
 2 files changed, 46 insertions(+), 4 deletions(-)

diff --git 
a/amoro-ams/src/main/java/org/apache/amoro/server/table/DefaultTableRuntime.java
 
b/amoro-ams/src/main/java/org/apache/amoro/server/table/DefaultTableRuntime.java
index c1506218d..6cf566eef 100644
--- 
a/amoro-ams/src/main/java/org/apache/amoro/server/table/DefaultTableRuntime.java
+++ 
b/amoro-ams/src/main/java/org/apache/amoro/server/table/DefaultTableRuntime.java
@@ -309,11 +309,9 @@ public class DefaultTableRuntime extends 
AbstractTableRuntime
   public DefaultTableRuntime refresh(AmoroTable<?> table) {
     Map<String, String> tableConfig = table.properties();
     TableConfiguration newConfiguration = 
TableConfigurations.parseTableConfig(tableConfig);
-    TableConfiguration oldConfiguration = getTableConfiguration();
-    boolean configChanged = !newConfiguration.equals(oldConfiguration);
+    String newGroupName = 
newConfiguration.getOptimizingConfig().getOptimizerGroup();
 
-    if (!Objects.equals(
-        getGroupName(), 
newConfiguration.getOptimizingConfig().getOptimizerGroup())) {
+    if (!Objects.equals(getGroupName(), newGroupName)) {
       if (optimizingProcess != null) {
         optimizingProcess.close(false);
       }
@@ -327,6 +325,7 @@ public class DefaultTableRuntime extends 
AbstractTableRuntime
               config.clear();
               config.putAll(tableConfig);
             })
+        .updateGroup(g -> newGroupName)
         .updateState(
             OPTIMIZING_STATE_KEY,
             s -> {
diff --git 
a/amoro-ams/src/test/java/org/apache/amoro/server/table/TestDefaultTableRuntimeHandler.java
 
b/amoro-ams/src/test/java/org/apache/amoro/server/table/TestDefaultTableRuntimeHandler.java
index 8b6b9c315..792faebcf 100644
--- 
a/amoro-ams/src/test/java/org/apache/amoro/server/table/TestDefaultTableRuntimeHandler.java
+++ 
b/amoro-ams/src/test/java/org/apache/amoro/server/table/TestDefaultTableRuntimeHandler.java
@@ -130,6 +130,49 @@ public class TestDefaultTableRuntimeHandler extends 
AMSTableTestBase {
     tableService = null;
   }
 
+  @Test
+  public void testRefreshUpdatesOptimizerGroup() throws Exception {
+    tableService =
+        new DefaultTableService(new Configurations(), CATALOG_MANAGER, 
runtimeFactoryManager);
+    TestHandler handler = new TestHandler();
+    tableService.addHandlerChain(handler);
+    tableService.initialize();
+    if (!(catalogTestHelper().tableFormat().equals(TableFormat.MIXED_HIVE)
+        && TEST_HMS.getHiveClient().getDatabase(TableTestHelper.TEST_DB_NAME) 
!= null)) {
+      createDatabase();
+    }
+    createTable();
+
+    ServerTableIdentifier tableId = tableManager().listManagedTables().get(0);
+    DefaultTableRuntime runtime = getDefaultTableRuntime(tableId.getId());
+
+    // Verify initial group name is "default"
+    String initialGroup = runtime.getGroupName();
+    Assert.assertEquals(TableProperties.SELF_OPTIMIZING_GROUP_DEFAULT, 
initialGroup);
+
+    // Change optimizer group property
+    String newGroupName = "new-optimizer-group";
+    MixedTable mixedTable = (MixedTable) 
tableService().loadTable(tableId).originalTable();
+    mixedTable.updateProperties().set(TableProperties.SELF_OPTIMIZING_GROUP, 
newGroupName).commit();
+
+    // Refresh the runtime
+    runtime.refresh(tableService.loadTable(tableId));
+
+    // Verify that getGroupName() returns the new group name
+    Assert.assertEquals(newGroupName, runtime.getGroupName());
+
+    // Verify config changed handler was called
+    Assert.assertEquals(1, handler.getConfigChangedTables().size());
+
+    // Cleanup
+    dropTable();
+    dropDatabase();
+    tableService.dispose();
+    MetricManager.dispose();
+    EventsManager.dispose();
+    tableService = null;
+  }
+
   protected DefaultTableService tableService() {
     if (tableService != null) {
       return tableService;

Reply via email to