From 505f43860b47b4fe7741eabddd7e4501e571e5a8 Mon Sep 17 00:00:00 2001 From: rongtong Date: Wed, 14 Sep 2022 23:13:36 +0800 Subject: [PATCH] Add enableCleanSpaceService config for statemachine (#234) --- .../openmessaging/storage/dledger/DLedgerConfig.java | 11 +++++++++++ .../dledger/store/file/DLedgerMmapFileStore.java | 12 +++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/dledger/src/main/java/io/openmessaging/storage/dledger/DLedgerConfig.java b/dledger/src/main/java/io/openmessaging/storage/dledger/DLedgerConfig.java index 090e6e50..74ac1236 100644 --- a/dledger/src/main/java/io/openmessaging/storage/dledger/DLedgerConfig.java +++ b/dledger/src/main/java/io/openmessaging/storage/dledger/DLedgerConfig.java @@ -91,6 +91,9 @@ public class DLedgerConfig { private long leadershipTransferWaitTimeout = 1000; + // Whether to force log cleanup when the disk reaches a certain space + private boolean enableCleanSpaceService = true; + public String getDefaultPath() { return storeBaseDir + File.separator + "dledger-" + selfId; } @@ -462,4 +465,12 @@ public String getSelfAddress() { public Map getPeerAddressMap() { return this.peerAddressMap; } + + public boolean isEnableCleanSpaceService() { + return enableCleanSpaceService; + } + + public void setEnableCleanSpaceService(boolean enableCleanSpaceService) { + this.enableCleanSpaceService = enableCleanSpaceService; + } } diff --git a/dledger/src/main/java/io/openmessaging/storage/dledger/store/file/DLedgerMmapFileStore.java b/dledger/src/main/java/io/openmessaging/storage/dledger/store/file/DLedgerMmapFileStore.java index 10368bc5..b804c419 100644 --- a/dledger/src/main/java/io/openmessaging/storage/dledger/store/file/DLedgerMmapFileStore.java +++ b/dledger/src/main/java/io/openmessaging/storage/dledger/store/file/DLedgerMmapFileStore.java @@ -85,7 +85,9 @@ public DLedgerMmapFileStore(DLedgerConfig dLedgerConfig, MemberState memberState localEntryBuffer = ThreadLocal.withInitial(() -> ByteBuffer.allocate(4 * 1024 * 1024)); localIndexBuffer = ThreadLocal.withInitial(() -> ByteBuffer.allocate(INDEX_UNIT_SIZE * 2)); flushDataService = new FlushDataService("DLedgerFlushDataService", logger); - cleanSpaceService = new CleanSpaceService("DLedgerCleanSpaceService", logger); + if (dLedgerConfig.isEnableCleanSpaceService()) { + cleanSpaceService = new CleanSpaceService("DLedgerCleanSpaceService", logger); + } } @Override @@ -93,7 +95,9 @@ public void startup() { load(); recover(); flushDataService.start(); - cleanSpaceService.start(); + if (cleanSpaceService != null) { + cleanSpaceService.start(); + } } @Override @@ -101,7 +105,9 @@ public void shutdown() { this.dataFileList.flush(0); this.indexFileList.flush(0); persistCheckPoint(); - cleanSpaceService.shutdown(); + if (cleanSpaceService != null) { + cleanSpaceService.shutdown(); + } flushDataService.shutdown(); }