You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by vo...@apache.org on 2021/09/27 00:50:44 UTC
[rocketmq] branch develop updated: [ISSUE #2667] Repair 'file
doesn't exist on this path'
This is an automated email from the ASF dual-hosted git repository.
vongosling 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 b30bd87 [ISSUE #2667] Repair 'file doesn't exist on this path'
b30bd87 is described below
commit b30bd870545f7a3ea62e5f41fdbb75ed2993c78c
Author: Git_Yang <30...@users.noreply.github.com>
AuthorDate: Mon Sep 27 08:50:30 2021 +0800
[ISSUE #2667] Repair 'file doesn't exist on this path'
Signed-off-by: zhangyang <Gi...@163.com>
---
.../org/apache/rocketmq/store/DefaultMessageStore.java | 14 +++++++++-----
.../apache/rocketmq/store/DefaultMessageStoreTest.java | 16 ++++++++++++++++
2 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/store/src/main/java/org/apache/rocketmq/store/DefaultMessageStore.java b/store/src/main/java/org/apache/rocketmq/store/DefaultMessageStore.java
index f6c652e..09e1534 100644
--- a/store/src/main/java/org/apache/rocketmq/store/DefaultMessageStore.java
+++ b/store/src/main/java/org/apache/rocketmq/store/DefaultMessageStore.java
@@ -164,6 +164,8 @@ public class DefaultMessageStore implements MessageStore {
File file = new File(StorePathConfigHelper.getLockFile(messageStoreConfig.getStorePathRootDir()));
MappedFile.ensureDirOK(file.getParent());
+ MappedFile.ensureDirOK(getStorePathPhysic());
+ MappedFile.ensureDirOK(getStorePathLogic());
lockFile = new RandomAccessFile(file, "rw");
}
@@ -779,8 +781,8 @@ public class DefaultMessageStore implements MessageStore {
return this.storeStatsService.toString();
}
- private String getStorePathPhysic() {
- String storePathPhysic = "";
+ public String getStorePathPhysic() {
+ String storePathPhysic;
if (DefaultMessageStore.this.getMessageStoreConfig().isEnableDLegerCommitLog()) {
storePathPhysic = ((DLedgerCommitLog)DefaultMessageStore.this.getCommitLog()).getdLedgerServer().getdLedgerConfig().getDataStorePath();
} else {
@@ -789,6 +791,10 @@ public class DefaultMessageStore implements MessageStore {
return storePathPhysic;
}
+ public String getStorePathLogic() {
+ return StorePathConfigHelper.getStorePathConsumeQueue(this.messageStoreConfig.getStorePathRootDir());
+ }
+
@Override
public HashMap<String, String> getRuntimeInfo() {
HashMap<String, String> result = this.storeStatsService.getRuntimeInfo();
@@ -807,9 +813,7 @@ public class DefaultMessageStore implements MessageStore {
}
{
- String storePathLogics = StorePathConfigHelper.getStorePathConsumeQueue(this.messageStoreConfig.getStorePathRootDir());
- double logicsRatio = UtilAll.isPathExists(storePathLogics) ?
- UtilAll.getDiskPartitionSpaceUsedPercent(storePathLogics) : -1;
+ double logicsRatio = UtilAll.getDiskPartitionSpaceUsedPercent(getStorePathLogic());
result.put(RunningStats.consumeQueueDiskRatio.name(), String.valueOf(logicsRatio));
}
diff --git a/store/src/test/java/org/apache/rocketmq/store/DefaultMessageStoreTest.java b/store/src/test/java/org/apache/rocketmq/store/DefaultMessageStoreTest.java
index 440f914..f3e619d 100644
--- a/store/src/test/java/org/apache/rocketmq/store/DefaultMessageStoreTest.java
+++ b/store/src/test/java/org/apache/rocketmq/store/DefaultMessageStoreTest.java
@@ -605,6 +605,22 @@ public class DefaultMessageStoreTest {
}
}
+ @Test
+ public void testStorePathOK() {
+ if (messageStore instanceof DefaultMessageStore) {
+ assertTrue(fileExists(((DefaultMessageStore) messageStore).getStorePathPhysic()));
+ assertTrue(fileExists(((DefaultMessageStore) messageStore).getStorePathLogic()));
+ }
+ }
+
+ private boolean fileExists(String path) {
+ if (path != null) {
+ File f = new File(path);
+ return f.exists();
+ }
+ return false;
+ }
+
private void damageCommitlog(long offset) throws Exception {
MessageStoreConfig messageStoreConfig = new MessageStoreConfig();
File file = new File(messageStoreConfig.getStorePathCommitLog() + File.separator + "00000000000000000000");