You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by du...@apache.org on 2022/03/03 02:41:28 UTC
[rocketmq] branch develop updated: fix that wrong dir is creaed when using mult-dirs storage (#3901)
This is an automated email from the ASF dual-hosted git repository.
duhengforever 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 3ccf651 fix that wrong dir is creaed when using mult-dirs storage (#3901)
3ccf651 is described below
commit 3ccf651ebf7c82cb50d27c0c25017a34ebb68007
Author: cserwen <cs...@163.com>
AuthorDate: Thu Mar 3 10:41:15 2022 +0800
fix that wrong dir is creaed when using mult-dirs storage (#3901)
Co-authored-by: dengzhiwen1 <de...@xiaomi.com>
---
.../java/org/apache/rocketmq/store/MappedFile.java | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/store/src/main/java/org/apache/rocketmq/store/MappedFile.java b/store/src/main/java/org/apache/rocketmq/store/MappedFile.java
index 774896b..b46e7ca 100644
--- a/store/src/main/java/org/apache/rocketmq/store/MappedFile.java
+++ b/store/src/main/java/org/apache/rocketmq/store/MappedFile.java
@@ -39,6 +39,7 @@ import org.apache.rocketmq.common.message.MessageExt;
import org.apache.rocketmq.common.message.MessageExtBatch;
import org.apache.rocketmq.store.CommitLog.PutMessageContext;
import org.apache.rocketmq.store.config.FlushDiskType;
+import org.apache.rocketmq.store.config.MessageStoreConfig;
import org.apache.rocketmq.store.util.LibC;
import sun.nio.ch.DirectBuffer;
@@ -80,14 +81,25 @@ public class MappedFile extends ReferenceResource {
public static void ensureDirOK(final String dirName) {
if (dirName != null) {
- File f = new File(dirName);
- if (!f.exists()) {
- boolean result = f.mkdirs();
- log.info(dirName + " mkdir " + (result ? "OK" : "Failed"));
+ if (dirName.contains(MessageStoreConfig.MULTI_PATH_SPLITTER)) {
+ String[] dirs = dirName.trim().split(MessageStoreConfig.MULTI_PATH_SPLITTER);
+ for (String dir : dirs) {
+ createDirIfNotExist(dir);
+ }
+ } else {
+ createDirIfNotExist(dirName);
}
}
}
+ private static void createDirIfNotExist(String dirName) {
+ File f = new File(dirName);
+ if (!f.exists()) {
+ boolean result = f.mkdirs();
+ log.info(dirName + " mkdir " + (result ? "OK" : "Failed"));
+ }
+ }
+
public static void clean(final ByteBuffer buffer) {
if (buffer == null || !buffer.isDirect() || buffer.capacity() == 0)
return;