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;