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/01 12:25:19 UTC

[rocketmq] branch develop updated: Fix testTruncateCQ on Windows by releasing mapped files. (#3865)

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 7438dab  Fix testTruncateCQ on Windows by releasing mapped files. (#3865)
7438dab is described below

commit 7438dab36474405b0dba40b4b07b57c60e157fe2
Author: cnScarb <jj...@163.com>
AuthorDate: Tue Mar 1 20:25:12 2022 +0800

    Fix testTruncateCQ on Windows by releasing mapped files. (#3865)
---
 .../java/org/apache/rocketmq/store/StoreTestUtil.java     | 15 +++++++++++++++
 .../rocketmq/store/dledger/DLedgerCommitlogTest.java      |  4 ++++
 2 files changed, 19 insertions(+)

diff --git a/store/src/test/java/org/apache/rocketmq/store/StoreTestUtil.java b/store/src/test/java/org/apache/rocketmq/store/StoreTestUtil.java
index 59809c2..12ca49f 100644
--- a/store/src/test/java/org/apache/rocketmq/store/StoreTestUtil.java
+++ b/store/src/test/java/org/apache/rocketmq/store/StoreTestUtil.java
@@ -16,6 +16,11 @@
  */
 package org.apache.rocketmq.store;
 
+import io.openmessaging.storage.dledger.store.file.DefaultMmapFile;
+import io.openmessaging.storage.dledger.store.file.MmapFile;
+import java.io.IOException;
+import java.util.List;
+import org.apache.commons.lang3.SystemUtils;
 import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.logging.InternalLoggerFactory;
 import org.apache.rocketmq.store.index.IndexFile;
@@ -86,4 +91,14 @@ public class StoreTestUtil {
             indexService.flush(f);
         }
     }
+
+    public static void releaseMmapFilesOnWindows(List<MmapFile> mappedFiles) throws IOException {
+        if (!SystemUtils.IS_OS_WINDOWS) {
+            return;
+        }
+        for (final MmapFile mappedFile : mappedFiles) {
+            DefaultMmapFile.clean(mappedFile.getMappedByteBuffer());
+            mappedFile.getFileChannel().close();
+        }
+    }
 }
diff --git a/store/src/test/java/org/apache/rocketmq/store/dledger/DLedgerCommitlogTest.java b/store/src/test/java/org/apache/rocketmq/store/dledger/DLedgerCommitlogTest.java
index 8ab8a23..0e3e01d 100644
--- a/store/src/test/java/org/apache/rocketmq/store/dledger/DLedgerCommitlogTest.java
+++ b/store/src/test/java/org/apache/rocketmq/store/dledger/DLedgerCommitlogTest.java
@@ -39,6 +39,8 @@ import org.apache.rocketmq.store.PutMessageStatus;
 import org.junit.Assert;
 import org.junit.Test;
 
+import static org.apache.rocketmq.store.StoreTestUtil.releaseMmapFilesOnWindows;
+
 public class DLedgerCommitlogTest extends MessageStoreTestBase {
 
 
@@ -63,6 +65,7 @@ public class DLedgerCommitlogTest extends MessageStoreTestBase {
             Assert.assertEquals(0, messageStore.dispatchBehindBytes());
             doGetMessages(messageStore, topic, 0, 2000, 0);
             messageStore.shutdown();
+            releaseMmapFilesOnWindows(dLedgerMmapFileStore.getDataFileList().getMappedFiles());
         }
 
         {
@@ -79,6 +82,7 @@ public class DLedgerCommitlogTest extends MessageStoreTestBase {
             Assert.assertEquals(0, messageStore.dispatchBehindBytes());
             doGetMessages(messageStore, topic, 0, 1700, 0);
             messageStore.shutdown();
+            releaseMmapFilesOnWindows(dLedgerMmapFileStore.getDataFileList().getMappedFiles());
         }
         {
             //Abnormal recover, left none commitlogs