This is an automated email from the ASF dual-hosted git repository. jinrongtong pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/rocketmq.git
The following commit(s) were added to refs/heads/develop by this push: new 9654299e77 [ISSUE #9412] Flush bak metrics file before deleting the original file (#9413) 9654299e77 is described below commit 9654299e778b7f0cdc95ce2dd134075084704835 Author: Ji Juntao <juntao....@alibaba-inc.com> AuthorDate: Tue May 20 09:47:20 2025 +0800 [ISSUE #9412] Flush bak metrics file before deleting the original file (#9413) * flush bak file before delete original file. * timer metrics. * english comment. --- .../apache/rocketmq/broker/transaction/TransactionMetrics.java | 8 ++++++++ common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java | 2 +- .../main/java/org/apache/rocketmq/store/timer/TimerMetrics.java | 8 ++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/broker/src/main/java/org/apache/rocketmq/broker/transaction/TransactionMetrics.java b/broker/src/main/java/org/apache/rocketmq/broker/transaction/TransactionMetrics.java index ad30c73c60..28fff6a90c 100644 --- a/broker/src/main/java/org/apache/rocketmq/broker/transaction/TransactionMetrics.java +++ b/broker/src/main/java/org/apache/rocketmq/broker/transaction/TransactionMetrics.java @@ -25,7 +25,11 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; +import java.nio.channels.FileChannel; import java.nio.charset.StandardCharsets; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardOpenOption; import java.util.Iterator; import java.util.Map; import java.util.Set; @@ -209,6 +213,10 @@ public class TransactionMetrics extends ConfigManager { File configFile = new File(config); if (configFile.exists()) { Files.copy(configFile, new File(backup)); + Path backupPath = Paths.get(backup); + try (FileChannel channel = FileChannel.open(backupPath, StandardOpenOption.WRITE)) { + channel.force(true); // force flush before deleting original file. + } configFile.delete(); } diff --git a/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java b/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java index a49bd00473..b607985e34 100644 --- a/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java +++ b/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java @@ -287,7 +287,7 @@ public class BrokerConfig extends BrokerIdentity { @ImportantField private long transactionCheckInterval = 30 * 1000; - private long transactionMetricFlushInterval = 3 * 1000; + private long transactionMetricFlushInterval = 10 * 1000; /** * transaction batch op message diff --git a/store/src/main/java/org/apache/rocketmq/store/timer/TimerMetrics.java b/store/src/main/java/org/apache/rocketmq/store/timer/TimerMetrics.java index 0d80dae3e3..03bcc6e8b9 100644 --- a/store/src/main/java/org/apache/rocketmq/store/timer/TimerMetrics.java +++ b/store/src/main/java/org/apache/rocketmq/store/timer/TimerMetrics.java @@ -25,7 +25,11 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; +import java.nio.channels.FileChannel; import java.nio.charset.StandardCharsets; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardOpenOption; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -263,6 +267,10 @@ public class TimerMetrics extends ConfigManager { File configFile = new File(config); if (configFile.exists()) { Files.copy(configFile, new File(backup)); + Path backupPath = Paths.get(backup); + try (FileChannel channel = FileChannel.open(backupPath, StandardOpenOption.WRITE)) { + channel.force(true); // force flush before deleting original file. + } configFile.delete(); }