This is an automated email from the ASF dual-hosted git repository.
jinsongzhou 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 026ae6b5d [AMORO-3754]failed to failover when only one node is alive
in ha mode #3754 (#3768)
026ae6b5d is described below
commit 026ae6b5d399e886760b28eb25b2c2d894f9572f
Author: Wang Tao <[email protected]>
AuthorDate: Thu Sep 18 16:46:14 2025 +0800
[AMORO-3754]failed to failover when only one node is alive in ha mode #3754
(#3768)
* [AMORO-3754]failed to failover when only one node is alive in ha mode
#3754 #3768
* [AMORO-3754]failed to failover when only one node is alive in ha mode
#3754 #3768
* stop sync optimize group before dispose
---
.../main/java/org/apache/amoro/server/AmoroServiceContainer.java | 9 +++++----
.../java/org/apache/amoro/server/DefaultOptimizingService.java | 7 +++++--
.../java/org/apache/amoro/server/table/DefaultTableRuntime.java | 7 ++++++-
.../java/org/apache/amoro/server/table/DefaultTableService.java | 1 +
amoro-common/src/main/java/org/apache/amoro/TableRuntime.java | 2 ++
5 files changed, 19 insertions(+), 7 deletions(-)
diff --git
a/amoro-ams/src/main/java/org/apache/amoro/server/AmoroServiceContainer.java
b/amoro-ams/src/main/java/org/apache/amoro/server/AmoroServiceContainer.java
index ddad83834..1f91119fc 100644
--- a/amoro-ams/src/main/java/org/apache/amoro/server/AmoroServiceContainer.java
+++ b/amoro-ams/src/main/java/org/apache/amoro/server/AmoroServiceContainer.java
@@ -205,12 +205,13 @@ public class AmoroServiceContainer {
}
public void disposeOptimizingService() {
- if (tableManagementServer != null && tableManagementServer.isServing()) {
- LOG.info("Stopping table management server...");
+ if (tableManagementServer != null) {
+ LOG.info(
+ "Stopping table management server[serving:{}] ...",
tableManagementServer.isServing());
tableManagementServer.stop();
}
- if (optimizingServiceServer != null &&
optimizingServiceServer.isServing()) {
- LOG.info("Stopping optimizing server...");
+ if (optimizingServiceServer != null) {
+ LOG.info("Stopping optimizing server[serving:{}] ...",
optimizingServiceServer.isServing());
optimizingServiceServer.stop();
}
if (tableService != null) {
diff --git
a/amoro-ams/src/main/java/org/apache/amoro/server/DefaultOptimizingService.java
b/amoro-ams/src/main/java/org/apache/amoro/server/DefaultOptimizingService.java
index 56ec18259..9bca292f5 100644
---
a/amoro-ams/src/main/java/org/apache/amoro/server/DefaultOptimizingService.java
+++
b/amoro-ams/src/main/java/org/apache/amoro/server/DefaultOptimizingService.java
@@ -360,13 +360,16 @@ public class DefaultOptimizingService extends
StatedPersistentBase
}
public void dispose() {
+ planExecutor.shutdown();
+ // shutdown sync group first, stop syncing group
+ optimizingConfigWatcher.dispose();
+ // dispose all queues
+ optimizingQueueByGroup.values().forEach(OptimizingQueue::dispose);
optimizerKeeper.dispose();
tableHandlerChain.dispose();
optimizingQueueByGroup.clear();
optimizingQueueByToken.clear();
authOptimizers.clear();
- planExecutor.shutdown();
- optimizingConfigWatcher.dispose();
}
@Override
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 ef619aeea..b6d4f8f50 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
@@ -417,10 +417,15 @@ public class DefaultTableRuntime extends
AbstractTableRuntime
}
@Override
- public void dispose() {
+ public void unregisterMetric() {
tableSummaryMetrics.unregister();
orphanFilesCleaningMetrics.unregister();
optimizingMetrics.unregister();
+ }
+
+ @Override
+ public void dispose() {
+ unregisterMetric();
store()
.synchronizedInvoke(
() -> {
diff --git
a/amoro-ams/src/main/java/org/apache/amoro/server/table/DefaultTableService.java
b/amoro-ams/src/main/java/org/apache/amoro/server/table/DefaultTableService.java
index a427ccfb9..25337e999 100644
---
a/amoro-ams/src/main/java/org/apache/amoro/server/table/DefaultTableService.java
+++
b/amoro-ams/src/main/java/org/apache/amoro/server/table/DefaultTableService.java
@@ -254,6 +254,7 @@ public class DefaultTableService extends PersistentBase
implements TableService
if (headHandler != null) {
headHandler.dispose();
}
+ tableRuntimeMap.values().forEach(TableRuntime::unregisterMetric);
}
@VisibleForTesting
diff --git a/amoro-common/src/main/java/org/apache/amoro/TableRuntime.java
b/amoro-common/src/main/java/org/apache/amoro/TableRuntime.java
index 097d900f6..bf083ab89 100644
--- a/amoro-common/src/main/java/org/apache/amoro/TableRuntime.java
+++ b/amoro-common/src/main/java/org/apache/amoro/TableRuntime.java
@@ -72,6 +72,8 @@ public interface TableRuntime {
*/
void registerMetric(MetricRegistry metricRegistry);
+ void unregisterMetric();
+
/** Get table format */
default TableFormat getFormat() {
return getTableIdentifier().getFormat();