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 <[email protected]>
AuthorDate: Mon Sep 27 08:50:30 2021 +0800

    [ISSUE #2667] Repair 'file doesn't exist on this path'
    
    Signed-off-by: zhangyang <[email protected]>
---
 .../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");

Reply via email to