From 14d3a4cff239c1b064031c981b029a83cc27e90c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl?= Date: Thu, 30 Sep 2021 17:47:58 +0200 Subject: [PATCH 01/11] Change dependencies for log4j2. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl --- bookkeeper-common/pom.xml | 20 ++++++++++++++ bookkeeper-dist/all/pom.xml | 12 +++++++-- bookkeeper-dist/bkctl/pom.xml | 12 +++++++-- bookkeeper-dist/server/pom.xml | 12 +++++++-- bookkeeper-server/pom.xml | 12 +++++++-- .../bookkeeper/bookie/FileSystemUpgrade.java | 6 +++-- dependencies.gradle | 7 ++--- microbenchmarks/pom.xml | 12 +++++++-- pom.xml | 27 +++++++++++++------ .../integration/utils/MavenClassLoader.java | 4 +-- tools/ledger/pom.xml | 14 ++++++++-- 11 files changed, 111 insertions(+), 27 deletions(-) diff --git a/bookkeeper-common/pom.xml b/bookkeeper-common/pom.xml index 82a6792f61c..c1065c975be 100644 --- a/bookkeeper-common/pom.xml +++ b/bookkeeper-common/pom.xml @@ -74,6 +74,26 @@ commons-lang3 test + + org.slf4j + slf4j-api + ${slf4j.version} + + + org.apache.logging.log4j + log4j-1.2-api + ${log4j.version} + + + org.apache.logging.log4j + log4j-core + ${log4j.version} + + + org.apache.logging.log4j + log4j-slf4j-impl + ${log4j.version} + diff --git a/bookkeeper-dist/all/pom.xml b/bookkeeper-dist/all/pom.xml index c337e99a12b..146dafa3271 100644 --- a/bookkeeper-dist/all/pom.xml +++ b/bookkeeper-dist/all/pom.xml @@ -99,8 +99,16 @@ - org.slf4j - slf4j-log4j12 + org.apache.logging.log4j + log4j-1.2-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-slf4j-impl diff --git a/bookkeeper-dist/bkctl/pom.xml b/bookkeeper-dist/bkctl/pom.xml index a4ab31f4ed5..8ac6545851e 100644 --- a/bookkeeper-dist/bkctl/pom.xml +++ b/bookkeeper-dist/bkctl/pom.xml @@ -47,8 +47,16 @@ - org.slf4j - slf4j-log4j12 + org.apache.logging.log4j + log4j-1.2-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-slf4j-impl diff --git a/bookkeeper-dist/server/pom.xml b/bookkeeper-dist/server/pom.xml index 41edb48a290..83777f5f342 100644 --- a/bookkeeper-dist/server/pom.xml +++ b/bookkeeper-dist/server/pom.xml @@ -85,8 +85,16 @@ - org.slf4j - slf4j-log4j12 + org.apache.logging.log4j + log4j-1.2-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-slf4j-impl diff --git a/bookkeeper-server/pom.xml b/bookkeeper-server/pom.xml index 6c5e0258904..07004c8770a 100644 --- a/bookkeeper-server/pom.xml +++ b/bookkeeper-server/pom.xml @@ -50,8 +50,16 @@ rocksdbjni - org.slf4j - slf4j-log4j12 + org.apache.logging.log4j + log4j-1.2-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-slf4j-impl org.apache.zookeeper diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/FileSystemUpgrade.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/FileSystemUpgrade.java index 3ba3675e7b5..b009eae38ca 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/FileSystemUpgrade.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/FileSystemUpgrade.java @@ -52,6 +52,7 @@ import org.apache.commons.cli.Options; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.io.FileUtils; +import org.apache.log4j.ConsoleAppender; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -335,8 +336,9 @@ private static void printHelp(Options opts) { public static void main(String[] args) throws Exception { org.apache.log4j.Logger root = org.apache.log4j.Logger.getRootLogger(); - root.addAppender(new org.apache.log4j.ConsoleAppender( - new org.apache.log4j.PatternLayout("%-5p [%t]: %m%n"))); + ConsoleAppender console = new org.apache.log4j.ConsoleAppender(); + console.setLayout(new org.apache.log4j.PatternLayout("%-5p [%t]: %m%n")); + root.addAppender(console); root.setLevel(org.apache.log4j.Level.ERROR); org.apache.log4j.Logger.getLogger(FileSystemUpgrade.class).setLevel( org.apache.log4j.Level.INFO); diff --git a/dependencies.gradle b/dependencies.gradle index 6806a42135c..78f492a3390 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -59,7 +59,7 @@ depVersions = [ junit: "4.12", junitFoundation: "11.0.0", kerby: "1.1.1", - log4j: "1.2.27", + log4j: "2.14.1", lombok: "1.18.20", lz4: "1.3.0", mockito: "3.0.0", @@ -150,8 +150,9 @@ depLibs = [ reflections: "org.reflections:reflections:${depVersions.reflections}", rocksDb: "org.rocksdb:rocksdbjni:${depVersions.rocksDb}", slf4j: "org.slf4j:slf4j-api:${depVersions.slf4j}", - slf4jSimple: "org.slf4j:slf4j-simple:${depVersions.slf4j}", - slf4jLog4j: "org.slf4j:slf4j-log4j12:${depVersions.slf4j}", + slf4jLog4jImpl: "org.apache.logging.log4j:log4j-slf4j-impl:${depVersions.log4j}", + slf4jLog4j: "org.apache.logging.log4j:log4j-1.2-api:${depVersions.log4j}", + log4jCore: "org.apache.logging.log4j:log4j-core:${depVersions.log4j}", shrinkwrapImpl: "org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-impl-maven:${depVersions.shrinkwrap}", shrinkwrapApi: "org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-api:${depVersions.shrinkwrap}", snappy: "org.xerial.snappy:snappy-java:${depVersions.snappy}", diff --git a/microbenchmarks/pom.xml b/microbenchmarks/pom.xml index c0cfedd73ad..dc0093954db 100644 --- a/microbenchmarks/pom.xml +++ b/microbenchmarks/pom.xml @@ -43,8 +43,16 @@ slf4j-api - org.slf4j - log4j-over-slf4j + org.apache.logging.log4j + log4j-1.2-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-slf4j-impl org.apache.bookkeeper diff --git a/pom.xml b/pom.xml index e5cac7a1926..20daf01ee38 100644 --- a/pom.xml +++ b/pom.xml @@ -145,6 +145,7 @@ 4.12 0.14.2 1.18.20 + 2.14.1 1.3.0 3.0.0 4.1.68.Final @@ -242,14 +243,19 @@ ${slf4j.version} - org.slf4j - slf4j-log4j12 - ${slf4j.version} + org.apache.logging.log4j + log4j-1.2-api + ${log4j.version} - org.slf4j - log4j-over-slf4j - ${slf4j.version} + org.apache.logging.log4j + log4j-core + ${log4j.version} + + + org.apache.logging.log4j + log4j-slf4j-impl + ${log4j.version} @@ -790,8 +796,13 @@ test - org.slf4j - slf4j-log4j12 + org.apache.logging.log4j + log4j-core + test + + + org.apache.logging.log4j + log4j-slf4j-impl test diff --git a/tests/integration-tests-utils/src/main/java/org/apache/bookkeeper/tests/integration/utils/MavenClassLoader.java b/tests/integration-tests-utils/src/main/java/org/apache/bookkeeper/tests/integration/utils/MavenClassLoader.java index 3c83f565a77..d4ee18cb389 100644 --- a/tests/integration-tests-utils/src/main/java/org/apache/bookkeeper/tests/integration/utils/MavenClassLoader.java +++ b/tests/integration-tests-utils/src/main/java/org/apache/bookkeeper/tests/integration/utils/MavenClassLoader.java @@ -71,7 +71,7 @@ private static MavenClassLoader createClassLoader(ConfigurableMavenResolverSyste Optional slf4jVersion = Arrays.stream(resolver.resolve(mainArtifact) .withTransitivity().asResolvedArtifact()) .filter((a) -> a.getCoordinate().getGroupId().equals("org.slf4j") - && a.getCoordinate().getArtifactId().equals("slf4j-log4j12")) + && a.getCoordinate().getArtifactId().equals("slf4j-1.2-api")) .map((a) -> a.getCoordinate().getVersion()) .findFirst(); @@ -81,7 +81,7 @@ private static MavenClassLoader createClassLoader(ConfigurableMavenResolverSyste MavenDependencies.createExclusion("org.slf4j:slf4j-log4j12"), MavenDependencies.createExclusion("log4j:log4j"))); if (slf4jVersion.isPresent()) { - deps.add(MavenDependencies.createDependency("org.slf4j:slf4j-simple:" + slf4jVersion.get(), + deps.add(MavenDependencies.createDependency("org.slf4j:slf4j-api:" + slf4jVersion.get(), ScopeType.COMPILE, false)); } diff --git a/tools/ledger/pom.xml b/tools/ledger/pom.xml index 8a5f074f85e..8becea1f281 100644 --- a/tools/ledger/pom.xml +++ b/tools/ledger/pom.xml @@ -36,8 +36,18 @@ ${project.parent.version} - org.slf4j - slf4j-log4j12 + org.apache.logging.log4j + log4j-1.2-api + runtime + + + org.apache.logging.log4j + log4j-core + runtime + + + org.apache.logging.log4j + log4j-slf4j-impl runtime From 49a33e290ae7b8684adc23a8948c3341f24a0a82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl?= Date: Wed, 6 Oct 2021 15:38:33 +0200 Subject: [PATCH 02/11] Fixed most tests and references to internal log4j1.2 APIs. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl --- .../bookkeeper/common/util/MdcUtils.java | 7 ++- .../common/util/OrderedExecutor.java | 14 ++--- .../util/TestOrderedExecutorDecorators.java | 53 +++++++++------- .../proto/BookieRequestProcessor.java | 7 ++- .../proto/PerChannelBookieClient.java | 9 +-- .../util/OrderedGenericCallback.java | 5 +- .../bookkeeper/client/MdcContextTest.java | 60 ++++++++++--------- .../apache/bookkeeper/util/LoggerOutput.java | 38 +++++++----- .../bookkeeper/proto/ProtocolBenchmark.java | 7 ++- 9 files changed, 110 insertions(+), 90 deletions(-) diff --git a/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/MdcUtils.java b/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/MdcUtils.java index f10f2540124..724d8a11ff0 100644 --- a/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/MdcUtils.java +++ b/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/MdcUtils.java @@ -23,18 +23,19 @@ import java.util.Map; +import org.apache.logging.log4j.ThreadContext; import org.slf4j.MDC; /** - * Utils for work with Slf4j MDC. + * Utils for work with Slf4j ThreadContext (formerly named MDC). */ public class MdcUtils { public static void restoreContext(Map mdcContextMap) { if (mdcContextMap == null || mdcContextMap.isEmpty()) { - MDC.clear(); + ThreadContext.clearAll(); } else { - MDC.setContextMap(mdcContextMap); + ThreadContext.putAll(mdcContextMap); } } } diff --git a/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/OrderedExecutor.java b/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/OrderedExecutor.java index 4330340cc1d..2a48b3c6c0b 100644 --- a/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/OrderedExecutor.java +++ b/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/OrderedExecutor.java @@ -52,7 +52,7 @@ import org.apache.bookkeeper.stats.OpStatsLogger; import org.apache.bookkeeper.stats.StatsLogger; import org.apache.commons.lang.StringUtils; -import org.slf4j.MDC; +import org.apache.logging.log4j.ThreadContext; /** * This class provides 2 things over the java {@link ExecutorService}. @@ -250,7 +250,7 @@ static class ContextPreservingRunnable implements Runnable { ContextPreservingRunnable(Runnable runnable) { this.runnable = runnable; - this.mdcContextMap = MDC.getCopyOfContextMap(); + this.mdcContextMap = ThreadContext.getContext(); } @Override @@ -259,7 +259,7 @@ public void run() { try { runnable.run(); } finally { - MDC.clear(); + ThreadContext.clearAll(); } } } @@ -273,7 +273,7 @@ static class ContextPreservingCallable implements Callable { ContextPreservingCallable(Callable callable) { this.callable = callable; - this.mdcContextMap = MDC.getCopyOfContextMap(); + this.mdcContextMap = ThreadContext.getContext(); } @Override @@ -282,7 +282,7 @@ public T call() throws Exception { try { return callable.call(); } finally { - MDC.clear(); + ThreadContext.clearAll(); } } } @@ -410,7 +410,7 @@ protected OrderedExecutor(String baseName, int numThreads, ThreadFactory threadF try { CpuAffinity.acquireCore(); } catch (Throwable t) { - log.warn("Failed to acquire CPU core for thread {}", Thread.currentThread().getName(), + log.warn("Failed to acquire CPU core for thread {}: {}", Thread.currentThread().getName(), t.getMessage(), t); } } @@ -466,7 +466,7 @@ public Number getSample() { } /** - * Flag describing executor's expectation in regards of MDC. + * Flag describing executor's expectation in regards of ThreadContext (formerlly named MDC). * All tasks submitted through executor's submit/execute methods will automatically respect this. * * @return true if runnable/callable is expected to preserve MDC, false otherwise. diff --git a/bookkeeper-common/src/test/java/org/apache/bookkeeper/common/util/TestOrderedExecutorDecorators.java b/bookkeeper-common/src/test/java/org/apache/bookkeeper/common/util/TestOrderedExecutorDecorators.java index f03b24df950..3fae022b8bc 100644 --- a/bookkeeper-common/src/test/java/org/apache/bookkeeper/common/util/TestOrderedExecutorDecorators.java +++ b/bookkeeper-common/src/test/java/org/apache/bookkeeper/common/util/TestOrderedExecutorDecorators.java @@ -26,19 +26,22 @@ import static org.junit.Assert.assertThat; import static org.mockito.AdditionalAnswers.answerVoid; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; +import static org.mockito.Mockito.*; import java.util.Queue; +import java.util.UUID; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.TimeUnit; import org.apache.log4j.Appender; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; import org.apache.log4j.MDC; import org.apache.log4j.spi.LoggingEvent; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.ThreadContext; +import org.apache.logging.log4j.core.LogEvent; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.appender.NullAppender; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -53,7 +56,7 @@ public class TestOrderedExecutorDecorators { private static final Logger log = LoggerFactory.getLogger(TestOrderedExecutorDecorators.class); private static final String MDC_KEY = "mdc-key"; - private Appender mockAppender; + private NullAppender mockAppender; private final Queue capturedEvents = new ConcurrentLinkedQueue<>(); public static String mdcFormat(Object mdc, String message) { @@ -62,24 +65,28 @@ public static String mdcFormat(Object mdc, String message) { @Before public void setUp() throws Exception { - MDC.clear(); - mockAppender = mock(Appender.class); - when(mockAppender.getName()).thenReturn("MockAppender"); - - LogManager.getRootLogger().addAppender(mockAppender); - LogManager.getRootLogger().setLevel(Level.INFO); - - doAnswer(answerVoid((LoggingEvent event) -> { - capturedEvents.add(mdcFormat(event.getMDC(MDC_KEY), - event.getRenderedMessage())); - })).when(mockAppender).doAppend(any()); + ThreadContext.clearAll(); + LoggerContext lc = (LoggerContext) org.apache.logging.log4j.LogManager.getContext(false); + mockAppender = spy(NullAppender.createAppender(UUID.randomUUID().toString())); + mockAppender.start(); + lc.getConfiguration().addAppender(mockAppender); + lc.getRootLogger().addAppender(lc.getConfiguration().getAppender(mockAppender.getName())); + lc.getConfiguration().getRootLogger().setLevel(Level.INFO); + lc.updateLoggers(); + + doAnswer(answerVoid((LogEvent event) -> { + capturedEvents.add(mdcFormat(event.getContextData().getValue(MDC_KEY), + event.getMessage().getFormattedMessage())); + })).when(mockAppender).append(any()); } @After public void tearDown() throws Exception { - LogManager.getRootLogger().removeAppender(mockAppender); + LoggerContext lc = (LoggerContext) org.apache.logging.log4j.LogManager.getContext(false); + lc.getRootLogger().removeAppender(lc.getConfiguration().getAppender(mockAppender.getName())); + lc.updateLoggers(); capturedEvents.clear(); - MDC.clear(); + ThreadContext.clearAll(); } @Test @@ -88,7 +95,7 @@ public void testMDCInvokeOrdered() throws Exception { .name("test").numThreads(20).preserveMdcForTaskExecution(true).build(); try { - MDC.put(MDC_KEY, "testMDCInvokeOrdered"); + ThreadContext.put(MDC_KEY, "testMDCInvokeOrdered"); executor.submitOrdered(10, () -> { log.info("foobar"); return 10; @@ -106,7 +113,7 @@ public void testMDCInvokeDirectOnChosen() throws Exception { .name("test").numThreads(20).preserveMdcForTaskExecution(true).build(); try { - MDC.put(MDC_KEY, "testMDCInvokeOrdered"); + ThreadContext.put(MDC_KEY, "testMDCInvokeOrdered"); executor.chooseThread(10).submit(() -> { log.info("foobar"); return 10; @@ -126,7 +133,7 @@ public void testMDCScheduleOrdered() throws Exception { .name("test").numThreads(20).preserveMdcForTaskExecution(true).build(); try { - MDC.put(MDC_KEY, "testMDCInvokeOrdered"); + ThreadContext.put(MDC_KEY, "testMDCInvokeOrdered"); scheduler.scheduleOrdered(10, safeRun(() -> { log.info("foobar"); }), 0, TimeUnit.DAYS).get(); @@ -143,7 +150,7 @@ public void testMDCScheduleDirectOnChosen() throws Exception { .name("test").numThreads(20).preserveMdcForTaskExecution(true).build(); try { - MDC.put(MDC_KEY, "testMDCInvokeOrdered"); + ThreadContext.put(MDC_KEY, "testMDCInvokeOrdered"); scheduler.chooseThread(10).schedule(safeRun(() -> { log.info("foobar"); }), 0, TimeUnit.DAYS).get(); diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java index 67f83e9ce5f..0b6323f5345 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java @@ -57,6 +57,7 @@ import org.apache.bookkeeper.tls.SecurityException; import org.apache.bookkeeper.tls.SecurityHandlerFactory; import org.apache.bookkeeper.tls.SecurityHandlerFactory.NodeType; +import org.apache.logging.log4j.ThreadContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; @@ -357,7 +358,7 @@ public void processRequest(Object msg, Channel c) { break; } } finally { - MDC.clear(); + ThreadContext.clearAll(); } } else { BookieProtocol.Request r = (BookieProtocol.Request) msg; @@ -395,9 +396,9 @@ public void processRequest(Object msg, Channel c) { private void restoreMdcContextFromRequest(BookkeeperProtocol.Request req) { if (preserveMdcForTaskExecution) { - MDC.clear(); + ThreadContext.clearAll(); for (BookkeeperProtocol.ContextPair pair: req.getRequestContextList()) { - MDC.put(pair.getKey(), pair.getValue()); + ThreadContext.put(pair.getKey(), pair.getValue()); } } } diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java index 7346d19eed8..751b4942e96 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java @@ -140,6 +140,7 @@ import org.apache.bookkeeper.util.StringUtils; import org.apache.bookkeeper.util.collections.ConcurrentOpenHashMap; import org.apache.bookkeeper.util.collections.SynchronizedHashMultiMap; +import org.apache.logging.log4j.ThreadContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; @@ -1589,7 +1590,7 @@ public CompletionValue(String operationName, this.startTime = MathUtils.nowInNano(); this.opLogger = opLogger; this.timeoutOpLogger = timeoutOpLogger; - this.mdcContextMap = preserveMdcForTaskExecution ? MDC.getCopyOfContextMap() : null; + this.mdcContextMap = preserveMdcForTaskExecution ? ThreadContext.getContext() : null; } private long latency() { @@ -2380,7 +2381,7 @@ Request.Builder withRequestContext(Request.Builder builder) { } static Request.Builder appendRequestContext(Request.Builder builder) { - final Map mdcContextMap = MDC.getCopyOfContextMap(); + final Map mdcContextMap = ThreadContext.getContext(); if (mdcContextMap == null || mdcContextMap.isEmpty()) { return builder; } @@ -2407,7 +2408,7 @@ static class ContextPreservingFutureListener implements ChannelFutureListener { ContextPreservingFutureListener(ChannelFutureListener listener) { this.listener = listener; - this.mdcContextMap = MDC.getCopyOfContextMap(); + this.mdcContextMap = ThreadContext.getContext(); } @Override @@ -2416,7 +2417,7 @@ public void operationComplete(ChannelFuture future) throws Exception { try { listener.operationComplete(future); } finally { - MDC.clear(); + ThreadContext.clearAll(); } } } diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/OrderedGenericCallback.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/OrderedGenericCallback.java index 5c16de8e13b..7cd121c8887 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/OrderedGenericCallback.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/OrderedGenericCallback.java @@ -24,6 +24,7 @@ import org.apache.bookkeeper.common.util.OrderedExecutor; import org.apache.bookkeeper.common.util.SafeRunnable; import org.apache.bookkeeper.proto.BookkeeperInternalCallbacks.GenericCallback; +import org.apache.logging.log4j.ThreadContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; @@ -47,7 +48,7 @@ public abstract class OrderedGenericCallback implements GenericCallback { public OrderedGenericCallback(OrderedExecutor executor, long orderingKey) { this.executor = executor; this.orderingKey = orderingKey; - this.mdcContextMap = executor.preserveMdc() ? MDC.getCopyOfContextMap() : null; + this.mdcContextMap = executor.preserveMdc() ? ThreadContext.getContext() : null; } @Override @@ -80,7 +81,7 @@ public String toString() { } } } finally { - MDC.clear(); + ThreadContext.clearAll(); } } diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/MdcContextTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/MdcContextTest.java index 54cfaa593c4..5045c12979c 100644 --- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/MdcContextTest.java +++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/MdcContextTest.java @@ -28,11 +28,11 @@ import static org.mockito.AdditionalAnswers.answerVoid; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; +import static org.mockito.Mockito.spy; import java.io.File; import java.util.Queue; +import java.util.UUID; import java.util.concurrent.ConcurrentLinkedQueue; import lombok.extern.slf4j.Slf4j; @@ -43,12 +43,10 @@ import org.apache.bookkeeper.bookie.LedgerDirsManager; import org.apache.bookkeeper.conf.ClientConfiguration; import org.apache.bookkeeper.test.BookKeeperClusterTestCase; -import org.apache.log4j.Appender; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; -import org.apache.log4j.MDC; -import org.apache.log4j.spi.LoggingEvent; +import org.apache.logging.log4j.ThreadContext; +import org.apache.logging.log4j.core.LogEvent; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.appender.NullAppender; import org.hamcrest.CoreMatchers; import org.junit.After; import org.junit.Assert; @@ -69,9 +67,8 @@ public class MdcContextTest extends BookKeeperClusterTestCase { BookKeeper bkc; LedgerHandle lh; - private Appender mockAppender; + private NullAppender mockAppender; private Queue capturedEvents; - private Logger rootLogger = LogManager.getRootLogger(); public MdcContextTest() { super(3); @@ -110,39 +107,44 @@ public void setUp() throws Exception { .setMetadataServiceUri(zkUtil.getMetadataServiceUri()) .setPreserveMdcForTaskExecution(true); - MDC.clear(); + ThreadContext.clearAll(); bkc = new BookKeeper(conf); - MDC.put(MDC_REQUEST_ID, "ledger_create"); + ThreadContext.put(MDC_REQUEST_ID, "ledger_create"); log.info("creating ledger"); lh = bkc.createLedgerAdv(3, 3, 3, BookKeeper.DigestType.CRC32, new byte[] {}); - MDC.clear(); + ThreadContext.clearAll(); - mockAppender = mock(Appender.class); - when(mockAppender.getName()).thenReturn("MockAppender"); + LoggerContext lc = (LoggerContext) org.apache.logging.log4j.LogManager.getContext(false); + mockAppender = spy(NullAppender.createAppender(UUID.randomUUID().toString())); + mockAppender.start(); + lc.getConfiguration().addAppender(mockAppender); + lc.getRootLogger().addAppender(lc.getConfiguration().getAppender(mockAppender.getName())); + lc.getConfiguration().getRootLogger().setLevel(org.apache.logging.log4j.Level.INFO); + lc.updateLoggers(); - rootLogger.addAppender(mockAppender); - rootLogger.setLevel(Level.INFO); capturedEvents = new ConcurrentLinkedQueue<>(); - doAnswer(answerVoid((LoggingEvent event) -> capturedEvents.add( - mdcFormat(event.getMDC(MDC_REQUEST_ID), event.getRenderedMessage()) - ))).when(mockAppender).doAppend(any()); + doAnswer(answerVoid((LogEvent event) -> capturedEvents.add( + mdcFormat(event.getContextData().getValue(MDC_REQUEST_ID), event.getMessage().getFormattedMessage()) + ))).when(mockAppender).append(any()); } @After public void tearDown() throws Exception { lh.close(); bkc.close(); - rootLogger.removeAppender(mockAppender); + LoggerContext lc = (LoggerContext) org.apache.logging.log4j.LogManager.getContext(false); + lc.getRootLogger().removeAppender(lc.getConfiguration().getAppender(mockAppender.getName())); + lc.updateLoggers(); capturedEvents = null; - MDC.clear(); + ThreadContext.clearAll(); super.tearDown(); } @Test public void testLedgerCreateFails() throws Exception { - MDC.put(MDC_REQUEST_ID, "ledger_create_fail"); + ThreadContext.put(MDC_REQUEST_ID, "ledger_create_fail"); try { bkc.createLedgerAdv(99, 3, 2, BookKeeper.DigestType.CRC32, new byte[]{}); Assert.fail("should not get here"); @@ -154,7 +156,7 @@ public void testLedgerCreateFails() throws Exception { @Test public void testSimpleAdd() throws Exception { - MDC.put(MDC_REQUEST_ID, "ledger_add_entry"); + ThreadContext.put(MDC_REQUEST_ID, "ledger_add_entry"); lh.addEntry(0, entry); // client msg @@ -169,7 +171,7 @@ public void testAddWithEnsembleChange() throws Exception { startNewBookie(); killBookie(0); - MDC.put(MDC_REQUEST_ID, "ledger_add_entry"); + ThreadContext.put(MDC_REQUEST_ID, "ledger_add_entry"); lh.addEntry(1, entry); assertLogWithMdc("ledger_add_entry", "Could not connect to bookie"); assertLogWithMdc("ledger_add_entry", "Failed to write entry"); @@ -187,7 +189,7 @@ public void testAddFailsWithReadOnlyBookie() throws Exception { ledgerDirsManager.addToFilledDirs(new File(ledgerDirs[0], "current")); } - MDC.put(MDC_REQUEST_ID, "ledger_add_entry"); + ThreadContext.put(MDC_REQUEST_ID, "ledger_add_entry"); try { lh.addEntry(0, entry); Assert.fail("should not get here"); @@ -207,7 +209,7 @@ public void testAddFailsWithReadOnlyBookie() throws Exception { public void testAddFailsDuplicateEntry() throws Exception { lh.addEntry(0, entry); - MDC.put(MDC_REQUEST_ID, "ledger_add_duplicate_entry"); + ThreadContext.put(MDC_REQUEST_ID, "ledger_add_duplicate_entry"); try { lh.addEntry(0, entry); Assert.fail("should not get here"); @@ -221,7 +223,7 @@ public void testAddFailsDuplicateEntry() throws Exception { @Test public void testReadEntryBeyondLac() throws Exception { - MDC.put(MDC_REQUEST_ID, "ledger_read_entry"); + ThreadContext.put(MDC_REQUEST_ID, "ledger_read_entry"); try { lh.readEntries(100, 100); @@ -238,7 +240,7 @@ public void testReadFromDeletedLedger() throws Exception { lh.close(); bkc.deleteLedger(lh.ledgerId); - MDC.put(MDC_REQUEST_ID, "ledger_read_entry"); + ThreadContext.put(MDC_REQUEST_ID, "ledger_read_entry"); try { lh.readEntries(100, 100); diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/util/LoggerOutput.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/util/LoggerOutput.java index eeb161e9ffd..610997cba91 100644 --- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/util/LoggerOutput.java +++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/util/LoggerOutput.java @@ -21,16 +21,18 @@ package org.apache.bookkeeper.util; import static org.mockito.Mockito.atLeastOnce; -import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import java.util.ArrayList; import java.util.List; +import java.util.UUID; import java.util.function.Consumer; import java.util.stream.Collectors; -import org.apache.log4j.Appender; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LogEvent; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.appender.NullAppender; import org.junit.rules.TestRule; import org.junit.runner.Description; import org.junit.runners.model.Statement; @@ -44,13 +46,13 @@ */ public class LoggerOutput implements TestRule { - private Appender logAppender; - private ArgumentCaptor logEventCaptor; - private List>> logEventExpectations = new ArrayList<>(); + private NullAppender logAppender; + private ArgumentCaptor logEventCaptor; + private final List>> logEventExpectations = new ArrayList<>(); public void expect(Consumer> expectation) { if (logEventCaptor == null) { - logEventCaptor = ArgumentCaptor.forClass(org.apache.log4j.spi.LoggingEvent.class); + logEventCaptor = ArgumentCaptor.forClass(LogEvent.class); } logEventExpectations.add(expectation); } @@ -61,13 +63,16 @@ public Statement apply(final Statement base, Description description) { @Override public void evaluate() throws Throwable { - logAppender = mock(Appender.class); - Logger rootLogger = LogManager.getRootLogger(); - rootLogger.addAppender(logAppender); + LoggerContext lc = (LoggerContext) LogManager.getContext(false); + logAppender = spy(NullAppender.createAppender(UUID.randomUUID().toString())); + logAppender.start(); + lc.getConfiguration().addAppender(logAppender); + lc.getRootLogger().addAppender(lc.getConfiguration().getAppender(logAppender.getName())); + lc.updateLoggers(); try { base.evaluate(); if (!logEventExpectations.isEmpty()) { - verify(logAppender, atLeastOnce()).doAppend(logEventCaptor.capture()); + verify(logAppender, atLeastOnce()).append(logEventCaptor.capture()); List logEvents = logEventCaptor.getAllValues().stream() .map(LoggerOutput::toSlf4j) .collect(Collectors.toList()); @@ -76,7 +81,8 @@ public void evaluate() throws Throwable { } } } finally { - rootLogger.removeAppender(logAppender); + lc.getRootLogger().removeAppender(lc.getConfiguration().getAppender(logAppender.getName())); + lc.updateLoggers(); logEventExpectations.clear(); logEventCaptor = null; } @@ -84,7 +90,7 @@ public void evaluate() throws Throwable { }; } - private static LoggingEvent toSlf4j(org.apache.log4j.spi.LoggingEvent log4jEvent) { + private static LoggingEvent toSlf4j(LogEvent log4jEvent) { return new LoggingEvent() { @Override public Level getLevel() { @@ -113,7 +119,7 @@ public String getLoggerName() { @Override public String getMessage() { - return log4jEvent.getRenderedMessage(); + return log4jEvent.getMessage().getFormattedMessage(); } @Override @@ -128,7 +134,7 @@ public Object[] getArgumentArray() { @Override public long getTimeStamp() { - return log4jEvent.getTimeStamp(); + return log4jEvent.getTimeMillis(); } @Override diff --git a/microbenchmarks/src/main/java/org/apache/bookkeeper/proto/ProtocolBenchmark.java b/microbenchmarks/src/main/java/org/apache/bookkeeper/proto/ProtocolBenchmark.java index 8ecf3a9287e..30cc00d4f0a 100644 --- a/microbenchmarks/src/main/java/org/apache/bookkeeper/proto/ProtocolBenchmark.java +++ b/microbenchmarks/src/main/java/org/apache/bookkeeper/proto/ProtocolBenchmark.java @@ -36,6 +36,7 @@ import org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion; import org.apache.bookkeeper.proto.BookkeeperProtocol.Request; import org.apache.bookkeeper.util.ByteBufList; +import org.apache.logging.log4j.ThreadContext; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.BenchmarkMode; import org.openjdk.jmh.annotations.Mode; @@ -126,8 +127,8 @@ public void testAddEntryV3() throws Exception { @Benchmark public void testAddEntryV3WithMdc() throws Exception { - MDC.put("parent_id", "LetsPutSomeLongParentRequestIdHere"); - MDC.put("request_id", "LetsPutSomeLongRequestIdHere"); + ThreadContext.put("parent_id", "LetsPutSomeLongParentRequestIdHere"); + ThreadContext.put("request_id", "LetsPutSomeLongRequestIdHere"); // Build the request and calculate the total size to be included in the packet. BKPacketHeader.Builder headerBuilder = BKPacketHeader.newBuilder() .setVersion(ProtocolVersion.VERSION_THREE) @@ -151,7 +152,7 @@ public void testAddEntryV3WithMdc() throws Exception { Object res = this.reqEnDeV3.encode(request, ByteBufAllocator.DEFAULT); ReferenceCountUtil.release(res); - MDC.clear(); + ThreadContext.clearAll(); } static Request.Builder appendRequestContextNoMdc(Request.Builder builder) { From c201c5a99247d1ee076d9c3368c0a3a599d2dc99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl?= Date: Wed, 6 Oct 2021 16:17:02 +0200 Subject: [PATCH 03/11] Fix PR validation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl --- .../java/org/apache/bookkeeper/common/util/MdcUtils.java | 1 - .../org/apache/bookkeeper/common/util/OrderedExecutor.java | 2 +- .../common/util/TestOrderedExecutorDecorators.java | 7 ++----- .../apache/bookkeeper/proto/BookieRequestProcessor.java | 1 - .../apache/bookkeeper/proto/PerChannelBookieClient.java | 1 - .../org/apache/bookkeeper/util/OrderedGenericCallback.java | 1 - dependencies.gradle | 1 + .../org/apache/bookkeeper/proto/ProtocolBenchmark.java | 1 - 8 files changed, 4 insertions(+), 11 deletions(-) diff --git a/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/MdcUtils.java b/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/MdcUtils.java index 724d8a11ff0..da24a866b49 100644 --- a/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/MdcUtils.java +++ b/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/MdcUtils.java @@ -24,7 +24,6 @@ import java.util.Map; import org.apache.logging.log4j.ThreadContext; -import org.slf4j.MDC; /** * Utils for work with Slf4j ThreadContext (formerly named MDC). diff --git a/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/OrderedExecutor.java b/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/OrderedExecutor.java index 2a48b3c6c0b..9177c4e6e39 100644 --- a/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/OrderedExecutor.java +++ b/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/OrderedExecutor.java @@ -466,7 +466,7 @@ public Number getSample() { } /** - * Flag describing executor's expectation in regards of ThreadContext (formerlly named MDC). + * Flag describing executor's expectation in regards of ThreadContext (formerly named MDC). * All tasks submitted through executor's submit/execute methods will automatically respect this. * * @return true if runnable/callable is expected to preserve MDC, false otherwise. diff --git a/bookkeeper-common/src/test/java/org/apache/bookkeeper/common/util/TestOrderedExecutorDecorators.java b/bookkeeper-common/src/test/java/org/apache/bookkeeper/common/util/TestOrderedExecutorDecorators.java index 3fae022b8bc..f3e174cb92d 100644 --- a/bookkeeper-common/src/test/java/org/apache/bookkeeper/common/util/TestOrderedExecutorDecorators.java +++ b/bookkeeper-common/src/test/java/org/apache/bookkeeper/common/util/TestOrderedExecutorDecorators.java @@ -26,18 +26,15 @@ import static org.junit.Assert.assertThat; import static org.mockito.AdditionalAnswers.answerVoid; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.spy; import java.util.Queue; import java.util.UUID; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.TimeUnit; -import org.apache.log4j.Appender; -import org.apache.log4j.MDC; -import org.apache.log4j.spi.LoggingEvent; import org.apache.logging.log4j.Level; -import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.ThreadContext; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.LoggerContext; diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java index 0b6323f5345..e7419b7eaf3 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java @@ -60,7 +60,6 @@ import org.apache.logging.log4j.ThreadContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.slf4j.MDC; /** * An implementation of the RequestProcessor interface. diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java index 751b4942e96..43b04b13b5c 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java @@ -143,7 +143,6 @@ import org.apache.logging.log4j.ThreadContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.slf4j.MDC; /** * This class manages all details of connection to a particular bookie. It also diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/OrderedGenericCallback.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/OrderedGenericCallback.java index 7cd121c8887..cbf37749225 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/OrderedGenericCallback.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/OrderedGenericCallback.java @@ -27,7 +27,6 @@ import org.apache.logging.log4j.ThreadContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.slf4j.MDC; /** * Generic callback implementation which will run the diff --git a/dependencies.gradle b/dependencies.gradle index 78f492a3390..c3d062466b3 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -150,6 +150,7 @@ depLibs = [ reflections: "org.reflections:reflections:${depVersions.reflections}", rocksDb: "org.rocksdb:rocksdbjni:${depVersions.rocksDb}", slf4j: "org.slf4j:slf4j-api:${depVersions.slf4j}", + slf4jSimple: "org.slf4j:slf4j-simple:${depVersions.slf4j}", slf4jLog4jImpl: "org.apache.logging.log4j:log4j-slf4j-impl:${depVersions.log4j}", slf4jLog4j: "org.apache.logging.log4j:log4j-1.2-api:${depVersions.log4j}", log4jCore: "org.apache.logging.log4j:log4j-core:${depVersions.log4j}", diff --git a/microbenchmarks/src/main/java/org/apache/bookkeeper/proto/ProtocolBenchmark.java b/microbenchmarks/src/main/java/org/apache/bookkeeper/proto/ProtocolBenchmark.java index 30cc00d4f0a..47bbc921572 100644 --- a/microbenchmarks/src/main/java/org/apache/bookkeeper/proto/ProtocolBenchmark.java +++ b/microbenchmarks/src/main/java/org/apache/bookkeeper/proto/ProtocolBenchmark.java @@ -45,7 +45,6 @@ import org.openjdk.jmh.annotations.Scope; import org.openjdk.jmh.annotations.Setup; import org.openjdk.jmh.annotations.State; -import org.slf4j.MDC; /** * Benchmarking serialization and deserialization. From 983737f392a4a498abf29c4faab0220e0fe69e55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl?= Date: Wed, 6 Oct 2021 18:42:29 +0200 Subject: [PATCH 04/11] Fixed license checks. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl --- bookkeeper-dist/src/main/resources/LICENSE-all.bin.txt | 8 +++++--- bookkeeper-dist/src/main/resources/LICENSE-bkctl.bin.txt | 7 +++++-- bookkeeper-dist/src/main/resources/LICENSE-server.bin.txt | 8 +++++--- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/bookkeeper-dist/src/main/resources/LICENSE-all.bin.txt b/bookkeeper-dist/src/main/resources/LICENSE-all.bin.txt index 91cd5acbaf8..037fde5aae5 100644 --- a/bookkeeper-dist/src/main/resources/LICENSE-all.bin.txt +++ b/bookkeeper-dist/src/main/resources/LICENSE-all.bin.txt @@ -241,7 +241,10 @@ Apache Software License, Version 2. - lib/io.vertx-vertx-core-3.9.8.jar [15] - lib/io.vertx-vertx-web-3.9.8.jar [16] - lib/io.vertx-vertx-web-common-3.9.8.jar [16] -- lib/log4j-log4j-1.2.17.jar [17] +- lib/org.apache.logging.log4j-log4j-1.2-api-2.14.1.jar [17] +- lib/org.apache.logging.log4j-log4j-api-2.14.1.jar [17] +- lib/org.apache.logging.log4j-log4j-core-2.14.1.jar [17] +- lib/org.apache.logging.log4j-log4j-slf4j-impl-2.14.1.jar [17] - lib/net.java.dev.jna-jna-3.2.7.jar [18] - lib/org.apache.commons-commons-collections4-4.1.jar [19] - lib/org.apache.commons-commons-lang3-3.6.jar [20] @@ -318,7 +321,7 @@ Apache Software License, Version 2. [14] Source available at https://github.com/vert-x3/vertx-bridge-common/tree/3.9.8 [15] Source available at https://github.com/eclipse/vert.x/tree/3.9.8 [16] Source available at https://github.com/vert-x3/vertx-web/tree/3.9.8 -[17] Source available at http://logging.apache.org/log4j/1.2/download.html +[17] Source available at https://github.com/apache/logging-log4j2/tree/rel/2.14.1 [18] Source available at https://github.com/java-native-access/jna/tree/3.2.7 [19] Source available at https://git-wip-us.apache.org/repos/asf?p=commons-collections.git;a=tag;h=a3a5ad [20] Source available at https://git-wip-us.apache.org/repos/asf?p=commons-lang.git;a=shortlog;h=refs/tags/LANG_3_6 @@ -639,7 +642,6 @@ MIT license. For details, see deps/slf4j-1.7.32/LICENSE.txt. Bundled as - lib/org.slf4j-slf4j-api-1.7.32.jar - - lib/org.slf4j-slf4j-log4j12-1.7.32.jar Source available at https://github.com/qos-ch/slf4j/tree/v_1.7.32 ------------------------------------------------------------------------------------ This product bundles the Google Auth Library, which is available under a "3-clause BSD" diff --git a/bookkeeper-dist/src/main/resources/LICENSE-bkctl.bin.txt b/bookkeeper-dist/src/main/resources/LICENSE-bkctl.bin.txt index 7cf5559cb55..69932ee117a 100644 --- a/bookkeeper-dist/src/main/resources/LICENSE-bkctl.bin.txt +++ b/bookkeeper-dist/src/main/resources/LICENSE-bkctl.bin.txt @@ -230,7 +230,10 @@ Apache Software License, Version 2. - lib/io.netty-netty-transport-4.1.68.Final.jar [11] - lib/io.netty-netty-transport-native-epoll-4.1.68.Final-linux-x86_64.jar [11] - lib/io.netty-netty-transport-native-unix-common-4.1.68.Final.jar [11] -- lib/log4j-log4j-1.2.17.jar [16] +- lib/org.apache.logging.log4j-log4j-1.2-api-2.14.1.jar [16] +- lib/org.apache.logging.log4j-log4j-api-2.14.1.jar [16] +- lib/org.apache.logging.log4j-log4j-core-2.14.1.jar [16] +- lib/org.apache.logging.log4j-log4j-slf4j-impl-2.14.1.jar [16] - lib/net.java.dev.jna-jna-3.2.7.jar [17] - lib/org.apache.commons-commons-collections4-4.1.jar [18] - lib/org.apache.commons-commons-lang3-3.6.jar [19] @@ -290,7 +293,7 @@ Apache Software License, Version 2. [9] Source available at https://git-wip-us.apache.org/repos/asf?p=commons-lang.git;a=tag;h=375459 [10] Source available at http://svn.apache.org/viewvc/commons/proper/logging/tags/commons-logging-1.1.1/ [11] Source available at https://github.com/netty/netty/tree/netty-4.1.68.Final -[16] Source available at http://logging.apache.org/log4j/1.2/download.html +[16] Source available at https://github.com/apache/logging-log4j2/tree/rel/2.14.1 [17] Source available at https://github.com/java-native-access/jna/tree/3.2.7 [18] Source available at https://git-wip-us.apache.org/repos/asf?p=commons-collections.git;a=tag;h=a3a5ad [19] Source available at https://git-wip-us.apache.org/repos/asf?p=commons-lang.git;a=shortlog;h=refs/tags/LANG_3_6 diff --git a/bookkeeper-dist/src/main/resources/LICENSE-server.bin.txt b/bookkeeper-dist/src/main/resources/LICENSE-server.bin.txt index fa667e832b3..978f10413a7 100644 --- a/bookkeeper-dist/src/main/resources/LICENSE-server.bin.txt +++ b/bookkeeper-dist/src/main/resources/LICENSE-server.bin.txt @@ -241,7 +241,10 @@ Apache Software License, Version 2. - lib/io.vertx-vertx-core-3.9.8.jar [15] - lib/io.vertx-vertx-web-3.9.8.jar [16] - lib/io.vertx-vertx-web-common-3.9.8.jar [16] -- lib/log4j-log4j-1.2.17.jar [17] +- lib/org.apache.logging.log4j-log4j-1.2-api-2.14.1.jar [17] +- lib/org.apache.logging.log4j-log4j-api-2.14.1.jar [17] +- lib/org.apache.logging.log4j-log4j-core-2.14.1.jar [17] +- lib/org.apache.logging.log4j-log4j-slf4j-impl-2.14.1.jar [17] - lib/net.java.dev.jna-jna-3.2.7.jar [18] - lib/org.apache.commons-commons-collections4-4.1.jar [19] - lib/org.apache.commons-commons-lang3-3.6.jar [20] @@ -316,7 +319,7 @@ Apache Software License, Version 2. [14] Source available at https://github.com/vert-x3/vertx-bridge-common/tree/3.9.8 [15] Source available at https://github.com/eclipse/vert.x/tree/3.9.8 [16] Source available at https://github.com/vert-x3/vertx-web/tree/3.9.8 -[17] Source available at http://logging.apache.org/log4j/1.2/download.html +[17] Source available at https://github.com/apache/logging-log4j2/tree/rel/2.14.1 [18] Source available at https://github.com/java-native-access/jna/tree/3.2.7 [19] Source available at https://git-wip-us.apache.org/repos/asf?p=commons-collections.git;a=tag;h=a3a5ad [20] Source available at https://git-wip-us.apache.org/repos/asf?p=commons-lang.git;a=shortlog;h=refs/tags/LANG_3_6 @@ -631,7 +634,6 @@ MIT license. For details, see deps/slf4j-1.7.32/LICENSE.txt. Bundled as - lib/org.slf4j-slf4j-api-1.7.32.jar - - lib/org.slf4j-slf4j-log4j12-1.7.32.jar Source available at https://github.com/qos-ch/slf4j/tree/v_1.7.32 ------------------------------------------------------------------------------------ This product bundles the Google Auth Library, which is available under a "3-clause BSD" From 210e0329d6863900c514ac75426f808d78c85d45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl?= Date: Wed, 6 Oct 2021 18:46:32 +0200 Subject: [PATCH 05/11] Restore slf4j simple in class loader. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl --- .../bookkeeper/tests/integration/utils/MavenClassLoader.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/integration-tests-utils/src/main/java/org/apache/bookkeeper/tests/integration/utils/MavenClassLoader.java b/tests/integration-tests-utils/src/main/java/org/apache/bookkeeper/tests/integration/utils/MavenClassLoader.java index d4ee18cb389..2404f21a210 100644 --- a/tests/integration-tests-utils/src/main/java/org/apache/bookkeeper/tests/integration/utils/MavenClassLoader.java +++ b/tests/integration-tests-utils/src/main/java/org/apache/bookkeeper/tests/integration/utils/MavenClassLoader.java @@ -78,10 +78,9 @@ private static MavenClassLoader createClassLoader(ConfigurableMavenResolverSyste List deps = Lists.newArrayList( MavenDependencies.createDependency( mainArtifact, ScopeType.COMPILE, false, - MavenDependencies.createExclusion("org.slf4j:slf4j-log4j12"), MavenDependencies.createExclusion("log4j:log4j"))); if (slf4jVersion.isPresent()) { - deps.add(MavenDependencies.createDependency("org.slf4j:slf4j-api:" + slf4jVersion.get(), + deps.add(MavenDependencies.createDependency("org.slf4j:slf4j-simple:" + slf4jVersion.get(), ScopeType.COMPILE, false)); } From adbd5f5792a7c4a0e334f04dcb19ea948c739b1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl?= Date: Thu, 7 Oct 2021 09:50:52 +0200 Subject: [PATCH 06/11] Using slf4j MDC API. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl --- .../bookkeeper/common/util/MdcUtils.java | 8 +++---- .../common/util/OrderedExecutor.java | 12 +++++----- .../util/TestOrderedExecutorDecorators.java | 14 +++++------ .../src/main/resources/LICENSE-bkctl.bin.txt | 1 - .../proto/BookieRequestProcessor.java | 8 +++---- .../proto/PerChannelBookieClient.java | 10 ++++---- .../util/OrderedGenericCallback.java | 6 ++--- .../bookkeeper/client/MdcContextTest.java | 24 +++++++++---------- .../bookkeeper/proto/ProtocolBenchmark.java | 8 +++---- 9 files changed, 45 insertions(+), 46 deletions(-) diff --git a/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/MdcUtils.java b/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/MdcUtils.java index da24a866b49..f10f2540124 100644 --- a/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/MdcUtils.java +++ b/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/MdcUtils.java @@ -23,18 +23,18 @@ import java.util.Map; -import org.apache.logging.log4j.ThreadContext; +import org.slf4j.MDC; /** - * Utils for work with Slf4j ThreadContext (formerly named MDC). + * Utils for work with Slf4j MDC. */ public class MdcUtils { public static void restoreContext(Map mdcContextMap) { if (mdcContextMap == null || mdcContextMap.isEmpty()) { - ThreadContext.clearAll(); + MDC.clear(); } else { - ThreadContext.putAll(mdcContextMap); + MDC.setContextMap(mdcContextMap); } } } diff --git a/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/OrderedExecutor.java b/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/OrderedExecutor.java index 9177c4e6e39..2c892115014 100644 --- a/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/OrderedExecutor.java +++ b/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/OrderedExecutor.java @@ -52,7 +52,7 @@ import org.apache.bookkeeper.stats.OpStatsLogger; import org.apache.bookkeeper.stats.StatsLogger; import org.apache.commons.lang.StringUtils; -import org.apache.logging.log4j.ThreadContext; +import org.slf4j.MDC; /** * This class provides 2 things over the java {@link ExecutorService}. @@ -250,7 +250,7 @@ static class ContextPreservingRunnable implements Runnable { ContextPreservingRunnable(Runnable runnable) { this.runnable = runnable; - this.mdcContextMap = ThreadContext.getContext(); + this.mdcContextMap = MDC.getCopyOfContextMap(); } @Override @@ -259,7 +259,7 @@ public void run() { try { runnable.run(); } finally { - ThreadContext.clearAll(); + MDC.clear(); } } } @@ -273,7 +273,7 @@ static class ContextPreservingCallable implements Callable { ContextPreservingCallable(Callable callable) { this.callable = callable; - this.mdcContextMap = ThreadContext.getContext(); + this.mdcContextMap = MDC.getCopyOfContextMap(); } @Override @@ -282,7 +282,7 @@ public T call() throws Exception { try { return callable.call(); } finally { - ThreadContext.clearAll(); + MDC.clear(); } } } @@ -466,7 +466,7 @@ public Number getSample() { } /** - * Flag describing executor's expectation in regards of ThreadContext (formerly named MDC). + * Flag describing executor's expectation in regards of MDC. * All tasks submitted through executor's submit/execute methods will automatically respect this. * * @return true if runnable/callable is expected to preserve MDC, false otherwise. diff --git a/bookkeeper-common/src/test/java/org/apache/bookkeeper/common/util/TestOrderedExecutorDecorators.java b/bookkeeper-common/src/test/java/org/apache/bookkeeper/common/util/TestOrderedExecutorDecorators.java index f3e174cb92d..4f7fcf53a95 100644 --- a/bookkeeper-common/src/test/java/org/apache/bookkeeper/common/util/TestOrderedExecutorDecorators.java +++ b/bookkeeper-common/src/test/java/org/apache/bookkeeper/common/util/TestOrderedExecutorDecorators.java @@ -35,7 +35,6 @@ import java.util.concurrent.TimeUnit; import org.apache.logging.log4j.Level; -import org.apache.logging.log4j.ThreadContext; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.appender.NullAppender; @@ -45,6 +44,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.apache.log4j.MDC; /** * Test that decorators applied by OrderedExecutor/Scheduler are correctly applied. @@ -62,7 +62,7 @@ public static String mdcFormat(Object mdc, String message) { @Before public void setUp() throws Exception { - ThreadContext.clearAll(); + MDC.clear(); LoggerContext lc = (LoggerContext) org.apache.logging.log4j.LogManager.getContext(false); mockAppender = spy(NullAppender.createAppender(UUID.randomUUID().toString())); mockAppender.start(); @@ -83,7 +83,7 @@ public void tearDown() throws Exception { lc.getRootLogger().removeAppender(lc.getConfiguration().getAppender(mockAppender.getName())); lc.updateLoggers(); capturedEvents.clear(); - ThreadContext.clearAll(); + MDC.clear(); } @Test @@ -92,7 +92,7 @@ public void testMDCInvokeOrdered() throws Exception { .name("test").numThreads(20).preserveMdcForTaskExecution(true).build(); try { - ThreadContext.put(MDC_KEY, "testMDCInvokeOrdered"); + MDC.put(MDC_KEY, "testMDCInvokeOrdered"); executor.submitOrdered(10, () -> { log.info("foobar"); return 10; @@ -110,7 +110,7 @@ public void testMDCInvokeDirectOnChosen() throws Exception { .name("test").numThreads(20).preserveMdcForTaskExecution(true).build(); try { - ThreadContext.put(MDC_KEY, "testMDCInvokeOrdered"); + MDC.put(MDC_KEY, "testMDCInvokeOrdered"); executor.chooseThread(10).submit(() -> { log.info("foobar"); return 10; @@ -130,7 +130,7 @@ public void testMDCScheduleOrdered() throws Exception { .name("test").numThreads(20).preserveMdcForTaskExecution(true).build(); try { - ThreadContext.put(MDC_KEY, "testMDCInvokeOrdered"); + MDC.put(MDC_KEY, "testMDCInvokeOrdered"); scheduler.scheduleOrdered(10, safeRun(() -> { log.info("foobar"); }), 0, TimeUnit.DAYS).get(); @@ -147,7 +147,7 @@ public void testMDCScheduleDirectOnChosen() throws Exception { .name("test").numThreads(20).preserveMdcForTaskExecution(true).build(); try { - ThreadContext.put(MDC_KEY, "testMDCInvokeOrdered"); + MDC.put(MDC_KEY, "testMDCInvokeOrdered"); scheduler.chooseThread(10).schedule(safeRun(() -> { log.info("foobar"); }), 0, TimeUnit.DAYS).get(); diff --git a/bookkeeper-dist/src/main/resources/LICENSE-bkctl.bin.txt b/bookkeeper-dist/src/main/resources/LICENSE-bkctl.bin.txt index 69932ee117a..75a7285dfec 100644 --- a/bookkeeper-dist/src/main/resources/LICENSE-bkctl.bin.txt +++ b/bookkeeper-dist/src/main/resources/LICENSE-bkctl.bin.txt @@ -568,7 +568,6 @@ MIT license. For details, see deps/slf4j-1.7.32/LICENSE.txt. Bundled as - lib/org.slf4j-slf4j-api-1.7.32.jar - - lib/org.slf4j-slf4j-log4j12-1.7.32.jar Source available at https://github.com/qos-ch/slf4j/tree/v_1.7.32 ------------------------------------------------------------------------------------ This product bundles the Google Auth Library, which is available under a "3-clause BSD" diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java index e7419b7eaf3..67f83e9ce5f 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java @@ -57,9 +57,9 @@ import org.apache.bookkeeper.tls.SecurityException; import org.apache.bookkeeper.tls.SecurityHandlerFactory; import org.apache.bookkeeper.tls.SecurityHandlerFactory.NodeType; -import org.apache.logging.log4j.ThreadContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.slf4j.MDC; /** * An implementation of the RequestProcessor interface. @@ -357,7 +357,7 @@ public void processRequest(Object msg, Channel c) { break; } } finally { - ThreadContext.clearAll(); + MDC.clear(); } } else { BookieProtocol.Request r = (BookieProtocol.Request) msg; @@ -395,9 +395,9 @@ public void processRequest(Object msg, Channel c) { private void restoreMdcContextFromRequest(BookkeeperProtocol.Request req) { if (preserveMdcForTaskExecution) { - ThreadContext.clearAll(); + MDC.clear(); for (BookkeeperProtocol.ContextPair pair: req.getRequestContextList()) { - ThreadContext.put(pair.getKey(), pair.getValue()); + MDC.put(pair.getKey(), pair.getValue()); } } } diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java index 43b04b13b5c..7346d19eed8 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java @@ -140,9 +140,9 @@ import org.apache.bookkeeper.util.StringUtils; import org.apache.bookkeeper.util.collections.ConcurrentOpenHashMap; import org.apache.bookkeeper.util.collections.SynchronizedHashMultiMap; -import org.apache.logging.log4j.ThreadContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.slf4j.MDC; /** * This class manages all details of connection to a particular bookie. It also @@ -1589,7 +1589,7 @@ public CompletionValue(String operationName, this.startTime = MathUtils.nowInNano(); this.opLogger = opLogger; this.timeoutOpLogger = timeoutOpLogger; - this.mdcContextMap = preserveMdcForTaskExecution ? ThreadContext.getContext() : null; + this.mdcContextMap = preserveMdcForTaskExecution ? MDC.getCopyOfContextMap() : null; } private long latency() { @@ -2380,7 +2380,7 @@ Request.Builder withRequestContext(Request.Builder builder) { } static Request.Builder appendRequestContext(Request.Builder builder) { - final Map mdcContextMap = ThreadContext.getContext(); + final Map mdcContextMap = MDC.getCopyOfContextMap(); if (mdcContextMap == null || mdcContextMap.isEmpty()) { return builder; } @@ -2407,7 +2407,7 @@ static class ContextPreservingFutureListener implements ChannelFutureListener { ContextPreservingFutureListener(ChannelFutureListener listener) { this.listener = listener; - this.mdcContextMap = ThreadContext.getContext(); + this.mdcContextMap = MDC.getCopyOfContextMap(); } @Override @@ -2416,7 +2416,7 @@ public void operationComplete(ChannelFuture future) throws Exception { try { listener.operationComplete(future); } finally { - ThreadContext.clearAll(); + MDC.clear(); } } } diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/OrderedGenericCallback.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/OrderedGenericCallback.java index cbf37749225..5c16de8e13b 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/OrderedGenericCallback.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/OrderedGenericCallback.java @@ -24,9 +24,9 @@ import org.apache.bookkeeper.common.util.OrderedExecutor; import org.apache.bookkeeper.common.util.SafeRunnable; import org.apache.bookkeeper.proto.BookkeeperInternalCallbacks.GenericCallback; -import org.apache.logging.log4j.ThreadContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.slf4j.MDC; /** * Generic callback implementation which will run the @@ -47,7 +47,7 @@ public abstract class OrderedGenericCallback implements GenericCallback { public OrderedGenericCallback(OrderedExecutor executor, long orderingKey) { this.executor = executor; this.orderingKey = orderingKey; - this.mdcContextMap = executor.preserveMdc() ? ThreadContext.getContext() : null; + this.mdcContextMap = executor.preserveMdc() ? MDC.getCopyOfContextMap() : null; } @Override @@ -80,7 +80,7 @@ public String toString() { } } } finally { - ThreadContext.clearAll(); + MDC.clear(); } } diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/MdcContextTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/MdcContextTest.java index 5045c12979c..bd0425720bf 100644 --- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/MdcContextTest.java +++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/MdcContextTest.java @@ -43,7 +43,6 @@ import org.apache.bookkeeper.bookie.LedgerDirsManager; import org.apache.bookkeeper.conf.ClientConfiguration; import org.apache.bookkeeper.test.BookKeeperClusterTestCase; -import org.apache.logging.log4j.ThreadContext; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.appender.NullAppender; @@ -52,6 +51,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.apache.log4j.MDC; /** @@ -107,13 +107,13 @@ public void setUp() throws Exception { .setMetadataServiceUri(zkUtil.getMetadataServiceUri()) .setPreserveMdcForTaskExecution(true); - ThreadContext.clearAll(); + MDC.clear(); bkc = new BookKeeper(conf); - ThreadContext.put(MDC_REQUEST_ID, "ledger_create"); + MDC.put(MDC_REQUEST_ID, "ledger_create"); log.info("creating ledger"); lh = bkc.createLedgerAdv(3, 3, 3, BookKeeper.DigestType.CRC32, new byte[] {}); - ThreadContext.clearAll(); + MDC.clear(); LoggerContext lc = (LoggerContext) org.apache.logging.log4j.LogManager.getContext(false); mockAppender = spy(NullAppender.createAppender(UUID.randomUUID().toString())); @@ -138,13 +138,13 @@ public void tearDown() throws Exception { lc.getRootLogger().removeAppender(lc.getConfiguration().getAppender(mockAppender.getName())); lc.updateLoggers(); capturedEvents = null; - ThreadContext.clearAll(); + MDC.clear(); super.tearDown(); } @Test public void testLedgerCreateFails() throws Exception { - ThreadContext.put(MDC_REQUEST_ID, "ledger_create_fail"); + MDC.put(MDC_REQUEST_ID, "ledger_create_fail"); try { bkc.createLedgerAdv(99, 3, 2, BookKeeper.DigestType.CRC32, new byte[]{}); Assert.fail("should not get here"); @@ -156,7 +156,7 @@ public void testLedgerCreateFails() throws Exception { @Test public void testSimpleAdd() throws Exception { - ThreadContext.put(MDC_REQUEST_ID, "ledger_add_entry"); + MDC.put(MDC_REQUEST_ID, "ledger_add_entry"); lh.addEntry(0, entry); // client msg @@ -171,7 +171,7 @@ public void testAddWithEnsembleChange() throws Exception { startNewBookie(); killBookie(0); - ThreadContext.put(MDC_REQUEST_ID, "ledger_add_entry"); + MDC.put(MDC_REQUEST_ID, "ledger_add_entry"); lh.addEntry(1, entry); assertLogWithMdc("ledger_add_entry", "Could not connect to bookie"); assertLogWithMdc("ledger_add_entry", "Failed to write entry"); @@ -189,7 +189,7 @@ public void testAddFailsWithReadOnlyBookie() throws Exception { ledgerDirsManager.addToFilledDirs(new File(ledgerDirs[0], "current")); } - ThreadContext.put(MDC_REQUEST_ID, "ledger_add_entry"); + MDC.put(MDC_REQUEST_ID, "ledger_add_entry"); try { lh.addEntry(0, entry); Assert.fail("should not get here"); @@ -209,7 +209,7 @@ public void testAddFailsWithReadOnlyBookie() throws Exception { public void testAddFailsDuplicateEntry() throws Exception { lh.addEntry(0, entry); - ThreadContext.put(MDC_REQUEST_ID, "ledger_add_duplicate_entry"); + MDC.put(MDC_REQUEST_ID, "ledger_add_duplicate_entry"); try { lh.addEntry(0, entry); Assert.fail("should not get here"); @@ -223,7 +223,7 @@ public void testAddFailsDuplicateEntry() throws Exception { @Test public void testReadEntryBeyondLac() throws Exception { - ThreadContext.put(MDC_REQUEST_ID, "ledger_read_entry"); + MDC.put(MDC_REQUEST_ID, "ledger_read_entry"); try { lh.readEntries(100, 100); @@ -240,7 +240,7 @@ public void testReadFromDeletedLedger() throws Exception { lh.close(); bkc.deleteLedger(lh.ledgerId); - ThreadContext.put(MDC_REQUEST_ID, "ledger_read_entry"); + MDC.put(MDC_REQUEST_ID, "ledger_read_entry"); try { lh.readEntries(100, 100); diff --git a/microbenchmarks/src/main/java/org/apache/bookkeeper/proto/ProtocolBenchmark.java b/microbenchmarks/src/main/java/org/apache/bookkeeper/proto/ProtocolBenchmark.java index 47bbc921572..8ecf3a9287e 100644 --- a/microbenchmarks/src/main/java/org/apache/bookkeeper/proto/ProtocolBenchmark.java +++ b/microbenchmarks/src/main/java/org/apache/bookkeeper/proto/ProtocolBenchmark.java @@ -36,7 +36,6 @@ import org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion; import org.apache.bookkeeper.proto.BookkeeperProtocol.Request; import org.apache.bookkeeper.util.ByteBufList; -import org.apache.logging.log4j.ThreadContext; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.BenchmarkMode; import org.openjdk.jmh.annotations.Mode; @@ -45,6 +44,7 @@ import org.openjdk.jmh.annotations.Scope; import org.openjdk.jmh.annotations.Setup; import org.openjdk.jmh.annotations.State; +import org.slf4j.MDC; /** * Benchmarking serialization and deserialization. @@ -126,8 +126,8 @@ public void testAddEntryV3() throws Exception { @Benchmark public void testAddEntryV3WithMdc() throws Exception { - ThreadContext.put("parent_id", "LetsPutSomeLongParentRequestIdHere"); - ThreadContext.put("request_id", "LetsPutSomeLongRequestIdHere"); + MDC.put("parent_id", "LetsPutSomeLongParentRequestIdHere"); + MDC.put("request_id", "LetsPutSomeLongRequestIdHere"); // Build the request and calculate the total size to be included in the packet. BKPacketHeader.Builder headerBuilder = BKPacketHeader.newBuilder() .setVersion(ProtocolVersion.VERSION_THREE) @@ -151,7 +151,7 @@ public void testAddEntryV3WithMdc() throws Exception { Object res = this.reqEnDeV3.encode(request, ByteBufAllocator.DEFAULT); ReferenceCountUtil.release(res); - ThreadContext.clearAll(); + MDC.clear(); } static Request.Builder appendRequestContextNoMdc(Request.Builder builder) { From 273da9e77bcdce3e15ee5ebf8bc681cabaf1bd10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl?= Date: Thu, 7 Oct 2021 10:04:30 +0200 Subject: [PATCH 07/11] Remove unnecessary lib exclusions. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl --- pom.xml | 8 -------- shaded/bookkeeper-server-shaded/pom.xml | 4 ---- shaded/bookkeeper-server-tests-shaded/pom.xml | 4 ---- shaded/distributedlog-core-shaded/pom.xml | 4 ---- stream/distributedlog/common/pom.xml | 6 ------ stream/statelib/pom.xml | 8 -------- stream/storage/impl/pom.xml | 8 -------- 7 files changed, 42 deletions(-) diff --git a/pom.xml b/pom.xml index 20daf01ee38..7716d087157 100644 --- a/pom.xml +++ b/pom.xml @@ -493,10 +493,6 @@ net.java.dev.javacc javacc - - org.slf4j - slf4j-log4j12 - org.slf4j slf4j-api @@ -517,10 +513,6 @@ ${zookeeper.version} test-jar - - org.slf4j - slf4j-log4j12 - org.slf4j slf4j-api diff --git a/shaded/bookkeeper-server-shaded/pom.xml b/shaded/bookkeeper-server-shaded/pom.xml index 0644f91bcf9..394986b8211 100644 --- a/shaded/bookkeeper-server-shaded/pom.xml +++ b/shaded/bookkeeper-server-shaded/pom.xml @@ -34,10 +34,6 @@ bookkeeper-server ${project.version} - - org.slf4j - slf4j-log4j12 - log4j log4j diff --git a/shaded/bookkeeper-server-tests-shaded/pom.xml b/shaded/bookkeeper-server-tests-shaded/pom.xml index a5cd9f6a177..ba9ff1b2164 100644 --- a/shaded/bookkeeper-server-tests-shaded/pom.xml +++ b/shaded/bookkeeper-server-tests-shaded/pom.xml @@ -35,10 +35,6 @@ test-jar ${project.version} - - org.slf4j - slf4j-log4j12 - log4j log4j diff --git a/shaded/distributedlog-core-shaded/pom.xml b/shaded/distributedlog-core-shaded/pom.xml index c1cf1fef955..72f8738cffe 100644 --- a/shaded/distributedlog-core-shaded/pom.xml +++ b/shaded/distributedlog-core-shaded/pom.xml @@ -35,10 +35,6 @@ distributedlog-core ${project.version} - - org.slf4j - slf4j-log4j12 - log4j log4j diff --git a/stream/distributedlog/common/pom.xml b/stream/distributedlog/common/pom.xml index f91055fa99d..f1b79405672 100644 --- a/stream/distributedlog/common/pom.xml +++ b/stream/distributedlog/common/pom.xml @@ -29,12 +29,6 @@ org.apache.bookkeeper.stats bookkeeper-stats-api ${project.parent.version} - - - org.slf4j - slf4j-log4j12 - - org.apache.bookkeeper diff --git a/stream/statelib/pom.xml b/stream/statelib/pom.xml index d2466182dad..4eeb8ba2287 100644 --- a/stream/statelib/pom.xml +++ b/stream/statelib/pom.xml @@ -82,10 +82,6 @@ net.java.dev.javacc javacc - - org.slf4j - slf4j-log4j12 - org.slf4j slf4j-api @@ -106,10 +102,6 @@ ${zookeeper.version} test-jar - - org.slf4j - slf4j-log4j12 - org.slf4j slf4j-api diff --git a/stream/storage/impl/pom.xml b/stream/storage/impl/pom.xml index 7b2ff7d5672..b51534799e7 100644 --- a/stream/storage/impl/pom.xml +++ b/stream/storage/impl/pom.xml @@ -83,10 +83,6 @@ net.java.dev.javacc javacc - - org.slf4j - slf4j-log4j12 - org.slf4j slf4j-api @@ -107,10 +103,6 @@ ${zookeeper.version} test-jar - - org.slf4j - slf4j-log4j12 - org.slf4j slf4j-api From 265a9573c3a23094aa856ed6b8543a533905db3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl?= Date: Thu, 7 Oct 2021 10:29:21 +0200 Subject: [PATCH 08/11] Working on gradle dependencies. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl --- bookkeeper-common/build.gradle | 5 +++-- .../common/util/TestOrderedExecutorDecorators.java | 2 +- bookkeeper-dist/all/build.gradle | 2 +- bookkeeper-dist/server/build.gradle | 2 +- bookkeeper-server/build.gradle | 4 +++- dependencies.gradle | 7 +++---- stats/utils/build.gradle | 2 +- stream/server/build.gradle | 2 +- tests/integration/cluster/build.gradle | 2 +- tools/perf/build.gradle | 2 +- tools/stream/build.gradle | 2 +- 11 files changed, 17 insertions(+), 15 deletions(-) diff --git a/bookkeeper-common/build.gradle b/bookkeeper-common/build.gradle index 27a9a063ff9..94b5b36d63c 100644 --- a/bookkeeper-common/build.gradle +++ b/bookkeeper-common/build.gradle @@ -41,9 +41,10 @@ dependencies { testImplementation depLibs.commonsLang3 testImplementation depLibs.hamcrest testImplementation depLibs.junit - testImplementation depLibs.log4j + testImplementation depLibs.log4jSlf4jImpl + testImplementation depLibs.log4j12api + testImplementation depLibs.log4jCore testImplementation depLibs.mockito - testImplementation depLibs.slf4jLog4j annotationProcessor depLibs.lombok testAnnotationProcessor depLibs.lombok diff --git a/bookkeeper-common/src/test/java/org/apache/bookkeeper/common/util/TestOrderedExecutorDecorators.java b/bookkeeper-common/src/test/java/org/apache/bookkeeper/common/util/TestOrderedExecutorDecorators.java index 4f7fcf53a95..f8d53b496d8 100644 --- a/bookkeeper-common/src/test/java/org/apache/bookkeeper/common/util/TestOrderedExecutorDecorators.java +++ b/bookkeeper-common/src/test/java/org/apache/bookkeeper/common/util/TestOrderedExecutorDecorators.java @@ -34,6 +34,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.TimeUnit; +import org.apache.log4j.MDC; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.LoggerContext; @@ -44,7 +45,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.apache.log4j.MDC; /** * Test that decorators applied by OrderedExecutor/Scheduler are correctly applied. diff --git a/bookkeeper-dist/all/build.gradle b/bookkeeper-dist/all/build.gradle index 2ad37192cb1..343f01a7111 100644 --- a/bookkeeper-dist/all/build.gradle +++ b/bookkeeper-dist/all/build.gradle @@ -40,7 +40,7 @@ dependencies { compileOnly depLibs.lombok compileOnly depLibs.spotbugsAnnotations - implementation depLibs.slf4jLog4j + implementation depLibs.log4j12api testCompileOnly depLibs.lombok diff --git a/bookkeeper-dist/server/build.gradle b/bookkeeper-dist/server/build.gradle index a3264f7875d..6ce817ddf9f 100644 --- a/bookkeeper-dist/server/build.gradle +++ b/bookkeeper-dist/server/build.gradle @@ -42,7 +42,7 @@ dependencies { compileOnly depLibs.lombok compileOnly depLibs.spotbugsAnnotations - implementation depLibs.slf4jLog4j + implementation depLibs.log4j12api testCompileOnly depLibs.lombok diff --git a/bookkeeper-server/build.gradle b/bookkeeper-server/build.gradle index b413c340902..b18ed013032 100644 --- a/bookkeeper-server/build.gradle +++ b/bookkeeper-server/build.gradle @@ -72,7 +72,9 @@ dependencies { testImplementation depLibs.zookeeperTest annotationProcessor depLibs.lombok testAnnotationProcessor depLibs.lombok - testImplementation depLibs.slf4jLog4j + testImplementation depLibs.log4jSlf4jImpl + testImplementation depLibs.log4j12api + testImplementation depLibs.log4jCore } test { diff --git a/dependencies.gradle b/dependencies.gradle index c3d062466b3..a7bc5bf66bb 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -126,7 +126,9 @@ depLibs = [ junit: "junit:junit:${depVersions.junit}", junitFoundation: "com.nordstrom.tools:junit-foundation:${depVersions.junitFoundation}", kerbySimpleKdc: "org.apache.kerby:kerb-simplekdc:${depVersions.kerby}", - log4j: "log4j:log4j:${depVersions.log4j}", + log4jSlf4jImpl: "org.apache.logging.log4j:log4j-slf4j-impl:${depVersions.log4j}", + log4j12api: "org.apache.logging.log4j:log4j-1.2-api:${depVersions.log4j}", + log4jCore: "org.apache.logging.log4j:log4j-core:${depVersions.log4j}", lombok: "org.projectlombok:lombok:${depVersions.lombok}", lz4: "net.jpountz.lz4:lz4:${depVersions.lz4}", metricsCore: "io.dropwizard.metrics:metrics-core:${depVersions.dropwizard}", @@ -151,9 +153,6 @@ depLibs = [ rocksDb: "org.rocksdb:rocksdbjni:${depVersions.rocksDb}", slf4j: "org.slf4j:slf4j-api:${depVersions.slf4j}", slf4jSimple: "org.slf4j:slf4j-simple:${depVersions.slf4j}", - slf4jLog4jImpl: "org.apache.logging.log4j:log4j-slf4j-impl:${depVersions.log4j}", - slf4jLog4j: "org.apache.logging.log4j:log4j-1.2-api:${depVersions.log4j}", - log4jCore: "org.apache.logging.log4j:log4j-core:${depVersions.log4j}", shrinkwrapImpl: "org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-impl-maven:${depVersions.shrinkwrap}", shrinkwrapApi: "org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-api:${depVersions.shrinkwrap}", snappy: "org.xerial.snappy:snappy-java:${depVersions.snappy}", diff --git a/stats/utils/build.gradle b/stats/utils/build.gradle index b03ced38162..39ff187fbf5 100644 --- a/stats/utils/build.gradle +++ b/stats/utils/build.gradle @@ -33,7 +33,7 @@ dependencies { implementation depLibs.jacksonAnnotations implementation depLibs.jcommander implementation depLibs.reflections - implementation depLibs.slf4jLog4j + implementation depLibs.log4j12api implementation depLibs.snakeyaml diff --git a/stream/server/build.gradle b/stream/server/build.gradle index 7eb3510848e..76f966abc2d 100644 --- a/stream/server/build.gradle +++ b/stream/server/build.gradle @@ -50,7 +50,7 @@ dependencies { implementation depLibs.zookeeper runtimeOnly depLibs.metricsCore runtimeOnly depLibs.snappy - runtimeOnly depLibs.slf4jLog4j + runtimeOnly depLibs.log4j12api runtimeOnly depLibs.commonsBeanutils runtimeOnly depLibs.vertxCore runtimeOnly depLibs.vertxWeb diff --git a/tests/integration/cluster/build.gradle b/tests/integration/cluster/build.gradle index f90ff2052c0..16e8fe6855f 100644 --- a/tests/integration/cluster/build.gradle +++ b/tests/integration/cluster/build.gradle @@ -37,7 +37,7 @@ dependencies { testImplementation project(':stream:clients:java:kv') testCompileOnly depLibs.lombok - testImplementation depLibs.slf4jLog4j + testImplementation depLibs.log4j12api testImplementation depLibs.testcontainers testImplementation depLibs.commonsConfiguration testAnnotationProcessor depLibs.lombok diff --git a/tools/perf/build.gradle b/tools/perf/build.gradle index b3a68c36e69..b7d659e6853 100644 --- a/tools/perf/build.gradle +++ b/tools/perf/build.gradle @@ -43,7 +43,7 @@ dependencies { implementation depLibs.commonsConfiguration implementation depLibs.guava implementation depLibs.jcommander - implementation depLibs.slf4jLog4j + implementation depLibs.log4j12api implementation depLibs.zookeeper implementation depLibs.curatorFramework implementation depLibs.protobuf diff --git a/tools/stream/build.gradle b/tools/stream/build.gradle index 6f232895ad6..223f27ed4dc 100644 --- a/tools/stream/build.gradle +++ b/tools/stream/build.gradle @@ -41,7 +41,7 @@ dependencies { implementation depLibs.commonsConfiguration implementation depLibs.guava implementation depLibs.jcommander - implementation depLibs.slf4jLog4j + implementation depLibs.log4j12api implementation depLibs.zookeeper implementation depLibs.curatorFramework implementation depLibs.protobuf From 5fd2b5395820da1ca209d51fa73ebc881ff1e135 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl?= Date: Thu, 7 Oct 2021 11:05:16 +0200 Subject: [PATCH 09/11] Fix import order. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl --- .../test/java/org/apache/bookkeeper/client/MdcContextTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/MdcContextTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/MdcContextTest.java index bd0425720bf..51d66d84059 100644 --- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/MdcContextTest.java +++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/MdcContextTest.java @@ -43,6 +43,7 @@ import org.apache.bookkeeper.bookie.LedgerDirsManager; import org.apache.bookkeeper.conf.ClientConfiguration; import org.apache.bookkeeper.test.BookKeeperClusterTestCase; +import org.apache.log4j.MDC; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.appender.NullAppender; @@ -51,7 +52,6 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import org.apache.log4j.MDC; /** From 221c8920d46990eb5fb49016532cba1339c36176 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl?= Date: Thu, 7 Oct 2021 11:17:33 +0200 Subject: [PATCH 10/11] Revert "Remove unnecessary lib exclusions." This reverts commit a01d257b17182d3acd3014ff3a7a3e413834e719. --- pom.xml | 8 ++++++++ shaded/bookkeeper-server-shaded/pom.xml | 4 ++++ shaded/bookkeeper-server-tests-shaded/pom.xml | 4 ++++ shaded/distributedlog-core-shaded/pom.xml | 4 ++++ stream/distributedlog/common/pom.xml | 6 ++++++ stream/statelib/pom.xml | 8 ++++++++ stream/storage/impl/pom.xml | 8 ++++++++ 7 files changed, 42 insertions(+) diff --git a/pom.xml b/pom.xml index 7716d087157..20daf01ee38 100644 --- a/pom.xml +++ b/pom.xml @@ -493,6 +493,10 @@ net.java.dev.javacc javacc + + org.slf4j + slf4j-log4j12 + org.slf4j slf4j-api @@ -513,6 +517,10 @@ ${zookeeper.version} test-jar + + org.slf4j + slf4j-log4j12 + org.slf4j slf4j-api diff --git a/shaded/bookkeeper-server-shaded/pom.xml b/shaded/bookkeeper-server-shaded/pom.xml index 394986b8211..0644f91bcf9 100644 --- a/shaded/bookkeeper-server-shaded/pom.xml +++ b/shaded/bookkeeper-server-shaded/pom.xml @@ -34,6 +34,10 @@ bookkeeper-server ${project.version} + + org.slf4j + slf4j-log4j12 + log4j log4j diff --git a/shaded/bookkeeper-server-tests-shaded/pom.xml b/shaded/bookkeeper-server-tests-shaded/pom.xml index ba9ff1b2164..a5cd9f6a177 100644 --- a/shaded/bookkeeper-server-tests-shaded/pom.xml +++ b/shaded/bookkeeper-server-tests-shaded/pom.xml @@ -35,6 +35,10 @@ test-jar ${project.version} + + org.slf4j + slf4j-log4j12 + log4j log4j diff --git a/shaded/distributedlog-core-shaded/pom.xml b/shaded/distributedlog-core-shaded/pom.xml index 72f8738cffe..c1cf1fef955 100644 --- a/shaded/distributedlog-core-shaded/pom.xml +++ b/shaded/distributedlog-core-shaded/pom.xml @@ -35,6 +35,10 @@ distributedlog-core ${project.version} + + org.slf4j + slf4j-log4j12 + log4j log4j diff --git a/stream/distributedlog/common/pom.xml b/stream/distributedlog/common/pom.xml index f1b79405672..f91055fa99d 100644 --- a/stream/distributedlog/common/pom.xml +++ b/stream/distributedlog/common/pom.xml @@ -29,6 +29,12 @@ org.apache.bookkeeper.stats bookkeeper-stats-api ${project.parent.version} + + + org.slf4j + slf4j-log4j12 + + org.apache.bookkeeper diff --git a/stream/statelib/pom.xml b/stream/statelib/pom.xml index 4eeb8ba2287..d2466182dad 100644 --- a/stream/statelib/pom.xml +++ b/stream/statelib/pom.xml @@ -82,6 +82,10 @@ net.java.dev.javacc javacc + + org.slf4j + slf4j-log4j12 + org.slf4j slf4j-api @@ -102,6 +106,10 @@ ${zookeeper.version} test-jar + + org.slf4j + slf4j-log4j12 + org.slf4j slf4j-api diff --git a/stream/storage/impl/pom.xml b/stream/storage/impl/pom.xml index b51534799e7..7b2ff7d5672 100644 --- a/stream/storage/impl/pom.xml +++ b/stream/storage/impl/pom.xml @@ -83,6 +83,10 @@ net.java.dev.javacc javacc + + org.slf4j + slf4j-log4j12 + org.slf4j slf4j-api @@ -103,6 +107,10 @@ ${zookeeper.version} test-jar + + org.slf4j + slf4j-log4j12 + org.slf4j slf4j-api From 48cbaed99083abb6b871b39955ad51371b71c60e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl?= Date: Thu, 7 Oct 2021 15:27:40 +0200 Subject: [PATCH 11/11] Remove transient addition of log4j1.2 from hadoop library. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raúl --- stream/distributedlog/io/dlfs/pom.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/stream/distributedlog/io/dlfs/pom.xml b/stream/distributedlog/io/dlfs/pom.xml index 7818d45b76d..31366ed9fc0 100644 --- a/stream/distributedlog/io/dlfs/pom.xml +++ b/stream/distributedlog/io/dlfs/pom.xml @@ -50,6 +50,14 @@ com.google.guava guava + + org.slf4j + slf4j-log4j12 + + + log4j + log4j +