This is an automated email from the ASF dual-hosted git repository. yong pushed a commit to branch branch-4.16 in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
commit d3e46307576b76d38ff87ed901f680204a979d6e Author: Hang Chen <[email protected]> AuthorDate: Tue Jun 20 09:10:41 2023 +0800 Make slogger use current class (#3994) ### Motivation We use Slogger to support DirectIO Entrylogger and create the slogger instance in DbLedgerStorage and passed down to DirectIOEntrylogger. However, in the subclasses, we generate a new Slogger instance without setting the context, which leads to the Slogger instance belonging to DbLedgerStorage or Slf4j. The broker logs are as follows. ``` 2023-06-19T15:21:56,518+0800 [main] INFO org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorage - ENTRYLOG_IDS_CANDIDATES_SELECTED 2023-06-19T15:21:56,561+0800 [main] INFO org.apache.bookkeeper.slogger.slf4j.Slf4jSlogger {directory=data/bookkeeper/ledgers/current, event=ENTRYLOGGER_CREATED, maxCachedReaders=32, maxCachedReadersPerThread=4, maxFileSize=1073741824, maxSaneEntrySize=5252620, perThreadBufferSize=33554432, readBufferSize=8388608, singleWriteBufferSize=33554432, totalReadBufferSize=268435456, totalWriteBufferSize=268435456} - ENTRYLOGGER_CREATED ``` Without the specific slogger instance name, it will be hard to configure a specific class to enable KV logger configuration. ### Modification Set the specific class context for each subclass slogger instance. After this change, the broker logs are as follows. ``` 2023-06-19T16:01:56,685+0800 [main] INFO org.apache.bookkeeper.bookie.storage.directentrylogger.EntryLogIdsImpl {dirs=[data/bookkeeper/ledgers/current], durationMs=0, event=ENTRYLOG_IDS_CANDIDATES_SELECTED, maxId=21474836 47, nextId=0} - ENTRYLOG_IDS_CANDIDATES_SELECTED 2023-06-19T16:01:56,721+0800 [main] INFO org.apache.bookkeeper.bookie.storage.directentrylogger.DirectEntryLogger {directory=data/bookkeeper/ledgers/current, event=ENTRYLOGGER_CREATED, maxCachedReaders=32, maxCachedReader sPerThread=4, maxFileSize=1073741824, maxSaneEntrySize=5252620, perThreadBufferSize=33554432, readBufferSize=8388608, singleWriteBufferSize=33554432, totalReadBufferSize=268435456, totalWriteBufferSize=268435456} - ENTRYLO GGER_CREATED ``` (cherry picked from commit 8085f66ecefbc6159ba3e8cc2fc04ac5dcd56d72) --- .../bookie/storage/directentrylogger/DirectCompactionEntryLog.java | 2 +- .../bookie/storage/directentrylogger/DirectEntryLogger.java | 3 +-- .../bookkeeper/bookie/storage/directentrylogger/DirectWriter.java | 6 ++++-- .../bookie/storage/{ => directentrylogger}/EntryLogIdsImpl.java | 6 +++--- .../org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorage.java | 2 +- .../org/apache/bookkeeper/bookie/storage/EntryLogTestUtils.java | 1 + .../bookie/storage/{ => directentrylogger}/TestEntryLogIds.java | 6 +++--- .../directentrylogger/TestTransactionalEntryLogCompactor.java | 1 - 8 files changed, 14 insertions(+), 13 deletions(-) diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectCompactionEntryLog.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectCompactionEntryLog.java index fadde648de..58ac98fec5 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectCompactionEntryLog.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectCompactionEntryLog.java @@ -87,7 +87,7 @@ public abstract class DirectCompactionEntryLog implements CompactionEntryLog { this.srcLogId = srcLogId; this.dstLogId = dstLogId; - this.slog = slog.kv("dstLogId", dstLogId).kv("srcLogId", srcLogId).ctx(); + this.slog = slog.kv("dstLogId", dstLogId).kv("srcLogId", srcLogId).ctx(DirectCompactionEntryLog.class); } @Override diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectEntryLogger.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectEntryLogger.java index f5b74d1265..0d2d509598 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectEntryLogger.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectEntryLogger.java @@ -53,7 +53,6 @@ import org.apache.bookkeeper.bookie.Bookie.NoEntryException; import org.apache.bookkeeper.bookie.EntryLogMetadata; import org.apache.bookkeeper.bookie.storage.CompactionEntryLog; import org.apache.bookkeeper.bookie.storage.EntryLogIds; -import org.apache.bookkeeper.bookie.storage.EntryLogIdsImpl; import org.apache.bookkeeper.bookie.storage.EntryLogScanner; import org.apache.bookkeeper.bookie.storage.EntryLogger; import org.apache.bookkeeper.common.util.nativeio.NativeIO; @@ -112,7 +111,7 @@ public class DirectEntryLogger implements EntryLogger { this.maxSaneEntrySize = maxSaneEntrySize; this.readBufferSize = Buffer.nextAlignment(readBufferSize); this.ids = ids; - this.slog = slogParent.kv("directory", ledgerDir).ctx(); + this.slog = slogParent.kv("directory", ledgerDir).ctx(DirectEntryLogger.class); this.stats = new DirectEntryLoggerStats(stats); diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectWriter.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectWriter.java index be411982d3..20a3d855b4 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectWriter.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectWriter.java @@ -45,6 +45,7 @@ class DirectWriter implements LogWriter { final ExecutorService writeExecutor; final Object bufferLock = new Object(); final List<Future<?>> outstandingWrites = new ArrayList<Future<?>>(); + final Slogger slog; Buffer nativeBuffer; long offset; private static volatile boolean useFallocate = true; @@ -60,6 +61,7 @@ class DirectWriter implements LogWriter { this.filename = filename; this.writeExecutor = writeExecutor; this.nativeIO = nativeIO; + this.slog = slog.ctx(DirectWriter.class); offset = 0; @@ -76,7 +78,7 @@ class DirectWriter implements LogWriter { if (useFallocate) { if (!SystemUtils.IS_OS_LINUX) { disableUseFallocate(); - slog.warn(Events.FALLOCATE_NOT_AVAILABLE); + this.slog.warn(Events.FALLOCATE_NOT_AVAILABLE); } else { try { int ret = nativeIO.fallocate(fd, NativeIO.FALLOC_FL_ZERO_RANGE, 0, maxFileSize); @@ -85,7 +87,7 @@ class DirectWriter implements LogWriter { // fallocate(2) is not supported on all filesystems. Since this is an optimization, disable // subsequent usage instead of failing the operation. disableUseFallocate(); - slog.kv("message", ex.getMessage()) + this.slog.kv("message", ex.getMessage()) .kv("file", filename) .kv("errno", ex.getErrno()) .warn(Events.FALLOCATE_NOT_AVAILABLE); diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/EntryLogIdsImpl.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/EntryLogIdsImpl.java similarity index 96% rename from bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/EntryLogIdsImpl.java rename to bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/EntryLogIdsImpl.java index 704d07ed6c..6b43fca47a 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/EntryLogIdsImpl.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/EntryLogIdsImpl.java @@ -18,7 +18,7 @@ * under the License. * */ -package org.apache.bookkeeper.bookie.storage; +package org.apache.bookkeeper.bookie.storage.directentrylogger; import java.io.File; import java.io.IOException; @@ -29,7 +29,7 @@ import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.bookkeeper.bookie.LedgerDirsManager; -import org.apache.bookkeeper.bookie.storage.directentrylogger.Events; +import org.apache.bookkeeper.bookie.storage.EntryLogIds; import org.apache.bookkeeper.slogger.Slogger; import org.apache.commons.lang3.tuple.Pair; /** @@ -48,7 +48,7 @@ public class EntryLogIdsImpl implements EntryLogIds { public EntryLogIdsImpl(LedgerDirsManager ledgerDirsManager, Slogger slog) throws IOException { this.ledgerDirsManager = ledgerDirsManager; - this.slog = slog; + this.slog = slog.ctx(EntryLogIdsImpl.class); findLargestGap(); } diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorage.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorage.java index ce9e8370ea..5b28332591 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorage.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorage.java @@ -54,9 +54,9 @@ import org.apache.bookkeeper.bookie.LedgerCache; import org.apache.bookkeeper.bookie.LedgerDirsManager; import org.apache.bookkeeper.bookie.LedgerStorage; import org.apache.bookkeeper.bookie.StateManager; -import org.apache.bookkeeper.bookie.storage.EntryLogIdsImpl; import org.apache.bookkeeper.bookie.storage.EntryLogger; import org.apache.bookkeeper.bookie.storage.directentrylogger.DirectEntryLogger; +import org.apache.bookkeeper.bookie.storage.directentrylogger.EntryLogIdsImpl; import org.apache.bookkeeper.bookie.storage.ldb.KeyValueStorageFactory.DbConfigType; import org.apache.bookkeeper.bookie.storage.ldb.SingleDirectoryDbLedgerStorage.LedgerLoggerProcessor; import org.apache.bookkeeper.common.util.MathUtils; diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/EntryLogTestUtils.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/EntryLogTestUtils.java index 8fa4bb9f84..f88e3883af 100644 --- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/EntryLogTestUtils.java +++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/EntryLogTestUtils.java @@ -32,6 +32,7 @@ import java.util.Arrays; import org.apache.bookkeeper.bookie.DefaultEntryLogger; import org.apache.bookkeeper.bookie.LedgerDirsManager; import org.apache.bookkeeper.bookie.storage.directentrylogger.DirectEntryLogger; +import org.apache.bookkeeper.bookie.storage.directentrylogger.EntryLogIdsImpl; import org.apache.bookkeeper.common.util.nativeio.NativeIOImpl; import org.apache.bookkeeper.conf.ServerConfiguration; import org.apache.bookkeeper.slogger.Slogger; diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/TestEntryLogIds.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestEntryLogIds.java similarity index 98% rename from bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/TestEntryLogIds.java rename to bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestEntryLogIds.java index 8b0d7f68bd..787a0514be 100644 --- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/TestEntryLogIds.java +++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestEntryLogIds.java @@ -18,7 +18,7 @@ * under the License. * */ -package org.apache.bookkeeper.bookie.storage; +package org.apache.bookkeeper.bookie.storage.directentrylogger; import static org.apache.bookkeeper.bookie.storage.EntryLogTestUtils.logIdFromLocation; import static org.apache.bookkeeper.bookie.storage.EntryLogTestUtils.makeEntry; @@ -33,8 +33,8 @@ import com.google.common.collect.Lists; import io.netty.buffer.ByteBuf; import java.io.File; import org.apache.bookkeeper.bookie.LedgerDirsManager; -import org.apache.bookkeeper.bookie.storage.directentrylogger.DirectCompactionEntryLog; -import org.apache.bookkeeper.bookie.storage.directentrylogger.DirectEntryLogger; +import org.apache.bookkeeper.bookie.storage.EntryLogIds; +import org.apache.bookkeeper.bookie.storage.EntryLogger; import org.apache.bookkeeper.slogger.Slogger; import org.apache.bookkeeper.test.TmpDirs; import org.apache.commons.lang3.tuple.Pair; diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestTransactionalEntryLogCompactor.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestTransactionalEntryLogCompactor.java index db79988af3..86d760d459 100644 --- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestTransactionalEntryLogCompactor.java +++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestTransactionalEntryLogCompactor.java @@ -49,7 +49,6 @@ import org.apache.bookkeeper.bookie.EntryLogMetadata; import org.apache.bookkeeper.bookie.MockLedgerStorage; import org.apache.bookkeeper.bookie.TransactionalEntryLogCompactor; import org.apache.bookkeeper.bookie.storage.CompactionEntryLog; -import org.apache.bookkeeper.bookie.storage.EntryLogIdsImpl; import org.apache.bookkeeper.bookie.storage.EntryLogScanner; import org.apache.bookkeeper.bookie.storage.EntryLogger; import org.apache.bookkeeper.common.util.nativeio.NativeIOImpl;
