Skip to content

[Hotfix] Fix Edit Catalog database-filter,After TableRuntime metric re-register conflict#4138

Open
czy006 wants to merge 1 commit intoapache:masterfrom
czy006:issues/amoro-fix-metrics-rg
Open

[Hotfix] Fix Edit Catalog database-filter,After TableRuntime metric re-register conflict#4138
czy006 wants to merge 1 commit intoapache:masterfrom
czy006:issues/amoro-fix-metrics-rg

Conversation

@czy006
Copy link
Contributor

@czy006 czy006 commented Mar 23, 2026

Fix Edit Catalog database-filter,After TableRuntime metric re-register conflict

Why are the changes needed?

When use external catalog,edit database-filter catalog properties,re-register table runtime failed

2026-03-20 16:13:34,333 ERROR [table-explorer-executor-0] [org.apache.amoro.server.table.DefaultTableService] [] - TableExplorer sync table TableIdentity{database=sl_oki_prod, tableName=payment_view__payment_case__case_log} error org.apache.amoro.exception.PersistenceException: java.lang.IllegalArgumentException: Metric is already been registered. at org.apache.amoro.exception.AmoroRuntimeException.wrap(AmoroRuntimeException.java:142) ~[amoro-common-0.9-SNAPSHOT.jar:0.9-SNAPSHOT] at org.apache.amoro.server.persistence.PersistentBase.doAsTransaction(PersistentBase.java:96) ~[amoro-ams-0.9-SNAPSHOT.jar:0.9-SNAPSHOT] at org.apache.amoro.server.table.DefaultTableService.syncTable(DefaultTableService.java:497) ~[amoro-ams-0.9-SNAPSHOT.jar:0.9-SNAPSHOT] at org.apache.amoro.server.table.DefaultTableService.lambda$exploreExternalCatalog$10(DefaultTableService.java:366) ~[amoro-ams-0.9-SNAPSHOT.jar:0.9-SNAPSHOT] at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1736) [?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] at java.lang.Thread.run(Thread.java:955) [?:?] Caused by: java.lang.IllegalArgumentException: Metric is already been registered. at org.apache.amoro.shade.guava32.com.google.common.base.Preconditions.checkArgument(Preconditions.java:143) ~[amoro-shade-guava-32-32.1.1-jre-0.7.0-incubating.jar:32.1.1-jre-0.7.0-incubating] at org.apache.amoro.metrics.MetricRegistry.lambda$register$1(MetricRegistry.java:86) ~[amoro-common-0.9-SNAPSHOT.jar:0.9-SNAPSHOT] at java.util.concurrent.ConcurrentHashMap.computeIfPresent(ConcurrentHashMap.java:1822) ~[?:?] at org.apache.amoro.metrics.MetricRegistry.register(MetricRegistry.java:77) ~[amoro-common-0.9-SNAPSHOT.jar:0.9-SNAPSHOT] at org.apache.amoro.server.table.TableOptimizingMetrics.registerMetric(TableOptimizingMetrics.java:223) ~[amoro-ams-0.9-SNAPSHOT.jar:0.9-SNAPSHOT] at org.apache.amoro.server.table.TableOptimizingMetrics.registerMetrics(TableOptimizingMetrics.java:242) ~[amoro-ams-0.9-SNAPSHOT.jar:0.9-SNAPSHOT] at org.apache.amoro.server.table.AbstractTableMetrics.register(AbstractTableMetrics.java:57) ~[amoro-ams-0.9-SNAPSHOT.jar:0.9-SNAPSHOT] at org.apache.amoro.server.table.paimon.PaimonTableRuntime.registerMetric(PaimonTableRuntime.java:134) ~[amoro-ams-0.9-SNAPSHOT.jar:0.9-SNAPSHOT] at org.apache.amoro.server.table.DefaultTableService.triggerTableAdded(DefaultTableService.java:554) ~[amoro-ams-0.9-SNAPSHOT.jar:0.9-SNAPSHOT] at org.apache.amoro.server.table.DefaultTableService.lambda$syncTable$25(DefaultTableService.java:507) ~[amoro-ams-0.9-SNAPSHOT.jar:0.9-SNAPSHOT] at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) ~[?:?] at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658) ~[?:?] at org.apache.amoro.server.persistence.PersistentBase.doAsTransaction(PersistentBase.java:91) ~[amoro-ams-0.9-SNAPSHOT.jar:0.9-SNAPSHOT] ... 6 more

Brief change log

  • triggerTableAdded must be dispose the same serverTableIdentifier tableRuntime
  • registeredMetricKeys clear and try to registerMetrics

How was this patch tested?

  • Add some test cases that check the changes thoroughly including negative and positive cases if possible

  • Add screenshots for manual tests if appropriate

  • Run test locally before making a pull request

Documentation

  • Does this pull request introduce a new feature? (no)
  • If yes, how is the feature documented? (not documented)

@github-actions github-actions bot added the module:ams-server Ams server module label Mar 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

module:ams-server Ams server module

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant