From 762f66b248ad063c2f7c553bce75637f5ebee327 Mon Sep 17 00:00:00 2001 From: horizonzy Date: Wed, 8 Mar 2023 00:02:25 +0800 Subject: [PATCH 1/3] Avoid unnecessary force write. --- .../java/org/apache/bookkeeper/bookie/Journal.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Journal.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Journal.java index eff1673edb0..22da82f26e1 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Journal.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Journal.java @@ -365,6 +365,7 @@ public static class ForceWriteRequest { private boolean shouldClose; private long lastFlushedPosition; private long logId; + private boolean flushedToDisk; public int process() { closeFileIfNecessary(); @@ -379,6 +380,13 @@ public int process() { return forceWriteWaiters.size(); } + + private void flushToDisk() throws IOException { + if (!flushedToDisk) { + logFile.forceWrite(false); + flushedToDisk = true; + } + } public void closeFileIfNecessary() { // Close if shouldClose is set @@ -386,7 +394,7 @@ public void closeFileIfNecessary() { // We should guard against exceptions so its // safe to call in catch blocks try { - logFile.forceWrite(false); + flushToDisk(); logFile.close(); // Call close only once shouldClose = false; @@ -525,7 +533,7 @@ public void run() { private void syncJournal(ForceWriteRequest lastRequest) throws IOException { long fsyncStartTime = MathUtils.nowInNano(); try { - lastRequest.logFile.forceWrite(false); + lastRequest.flushToDisk(); journalStats.getJournalSyncStats().registerSuccessfulEvent(MathUtils.elapsedNanos(fsyncStartTime), TimeUnit.NANOSECONDS); lastLogMark.setCurLogMark(lastRequest.logId, lastRequest.lastFlushedPosition); From bb8e59af8dd15ff012aaae7b5cb4773f9ee5619b Mon Sep 17 00:00:00 2001 From: horizonzy Date: Wed, 8 Mar 2023 00:13:46 +0800 Subject: [PATCH 2/3] code clean. --- .../java/org/apache/bookkeeper/bookie/Journal.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Journal.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Journal.java index 22da82f26e1..75404d95850 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Journal.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Journal.java @@ -365,7 +365,7 @@ public static class ForceWriteRequest { private boolean shouldClose; private long lastFlushedPosition; private long logId; - private boolean flushedToDisk; + private boolean flushed; public int process() { closeFileIfNecessary(); @@ -381,10 +381,10 @@ public int process() { return forceWriteWaiters.size(); } - private void flushToDisk() throws IOException { - if (!flushedToDisk) { + private void flushFileToDisk() throws IOException { + if (!flushed) { logFile.forceWrite(false); - flushedToDisk = true; + flushed = true; } } @@ -394,7 +394,7 @@ public void closeFileIfNecessary() { // We should guard against exceptions so its // safe to call in catch blocks try { - flushToDisk(); + flushFileToDisk(); logFile.close(); // Call close only once shouldClose = false; @@ -533,7 +533,7 @@ public void run() { private void syncJournal(ForceWriteRequest lastRequest) throws IOException { long fsyncStartTime = MathUtils.nowInNano(); try { - lastRequest.flushToDisk(); + lastRequest.flushFileToDisk(); journalStats.getJournalSyncStats().registerSuccessfulEvent(MathUtils.elapsedNanos(fsyncStartTime), TimeUnit.NANOSECONDS); lastLogMark.setCurLogMark(lastRequest.logId, lastRequest.lastFlushedPosition); From 877c8b67ee88518df795ef25ef7ff67323726563 Mon Sep 17 00:00:00 2001 From: horizonzy Date: Wed, 8 Mar 2023 00:17:22 +0800 Subject: [PATCH 3/3] fix style --- .../src/main/java/org/apache/bookkeeper/bookie/Journal.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Journal.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Journal.java index 75404d95850..df5e275d318 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Journal.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Journal.java @@ -380,7 +380,7 @@ public int process() { return forceWriteWaiters.size(); } - + private void flushFileToDisk() throws IOException { if (!flushed) { logFile.forceWrite(false);