You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fluo.apache.org by kt...@apache.org on 2022/11/08 15:46:27 UTC

[fluo] branch main updated: Get fluo building and running against Accumulo 2.1.0 (#1122)

This is an automated email from the ASF dual-hosted git repository.

kturner pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fluo.git


The following commit(s) were added to refs/heads/main by this push:
     new 44e134a9 Get fluo building and running against Accumulo 2.1.0 (#1122)
44e134a9 is described below

commit 44e134a9d90685b57fc60a8bcc9a8919e79e4e3b
Author: Keith Turner <kt...@apache.org>
AuthorDate: Tue Nov 8 15:46:21 2022 +0000

    Get fluo building and running against Accumulo 2.1.0 (#1122)
    
    These changes :
    
     * Update to log4j2 (this was slightly related to updating to Accumulo 2.1.0)
     * Update to Accumulo 2.1.0
     * made changes to get mvn verify running
     * made changes to get fluo running against an Accumulo instance setup by uno
     * Updated lots of dependencies
---
 .github/workflows/maven.yaml                       |  2 +-
 modules/accumulo/pom.xml                           | 13 ++++---
 .../fluo/accumulo/iterators/CountingIterator.java  |  2 +-
 .../iterators/GarbageCollectionIteratorTest.java   |  2 +-
 .../iterators/NotificationIteratorTest.java        |  2 +-
 .../iterators/OpenReadLockIteratorTest.java        |  2 +-
 .../accumulo/iterators/SnapshotIteratorTest.java   |  2 +-
 .../iterators/TimeSkippingIteratorTest.java        |  2 +-
 modules/api/pom.xml                                |  9 +++--
 modules/command/pom.xml                            | 14 ++++++--
 modules/core/pom.xml                               | 13 +++++--
 .../org/apache/fluo/core/impl/SharedResources.java |  4 +++
 modules/distribution/src/main/config/fluo-env.sh   |  4 +--
 .../distribution/src/main/config/log4j.properties  | 30 ----------------
 .../distribution/src/main/config/log4j2.properties | 37 +++++++++++++++++++
 modules/distribution/src/main/lib/fetch.sh         | 33 ++++++++---------
 modules/integration-tests/pom.xml                  | 19 +++++++---
 .../org/apache/fluo/integration/log/LogIT.java     | 27 +++++++++-----
 modules/mapreduce/pom.xml                          | 11 ++++--
 pom.xml                                            | 42 ++++++++++++----------
 20 files changed, 169 insertions(+), 101 deletions(-)

diff --git a/.github/workflows/maven.yaml b/.github/workflows/maven.yaml
index a84d641f..b5376c25 100644
--- a/.github/workflows/maven.yaml
+++ b/.github/workflows/maven.yaml
@@ -48,7 +48,7 @@ jobs:
         key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
         restore-keys: ${{ runner.os }}-m2
     - name: Build with Maven
-      run: mvn -B -V -e -ntp "-Dstyle.color=always" verify javadoc:jar
+      run: mvn -B -V -e -ntp "-Dstyle.color=always" -DskipITs verify javadoc:jar
       env:
         MAVEN_OPTS: -Djansi.force=true
     - name: Upload unit test results
diff --git a/modules/accumulo/pom.xml b/modules/accumulo/pom.xml
index 0788af1f..6fd95c41 100644
--- a/modules/accumulo/pom.xml
+++ b/modules/accumulo/pom.xml
@@ -58,13 +58,18 @@
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.easymock</groupId>
-      <artifactId>easymock</artifactId>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-core</artifactId>
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-slf4j2-impl</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.easymock</groupId>
+      <artifactId>easymock</artifactId>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/CountingIterator.java b/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/CountingIterator.java
index a2517be5..c937032b 100644
--- a/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/CountingIterator.java
+++ b/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/CountingIterator.java
@@ -23,7 +23,7 @@ import org.apache.accumulo.core.data.ByteSequence;
 import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.core.iterators.SortedMapIterator;
+import org.apache.accumulo.core.iteratorsImpl.system.SortedMapIterator;
 
 public class CountingIterator extends SortedMapIterator {
 
diff --git a/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/GarbageCollectionIteratorTest.java b/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/GarbageCollectionIteratorTest.java
index 18d12918..583bcc64 100644
--- a/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/GarbageCollectionIteratorTest.java
+++ b/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/GarbageCollectionIteratorTest.java
@@ -21,7 +21,7 @@ import java.util.Map;
 
 import org.apache.accumulo.core.iterators.IteratorEnvironment;
 import org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope;
-import org.apache.accumulo.core.iterators.SortedMapIterator;
+import org.apache.accumulo.core.iteratorsImpl.system.SortedMapIterator;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/NotificationIteratorTest.java b/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/NotificationIteratorTest.java
index 096f37c5..d2b157e5 100644
--- a/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/NotificationIteratorTest.java
+++ b/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/NotificationIteratorTest.java
@@ -25,7 +25,7 @@ import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.iterators.IteratorEnvironment;
 import org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope;
-import org.apache.accumulo.core.iterators.SortedMapIterator;
+import org.apache.accumulo.core.iteratorsImpl.system.SortedMapIterator;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/OpenReadLockIteratorTest.java b/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/OpenReadLockIteratorTest.java
index 08b4ee0d..2e619704 100644
--- a/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/OpenReadLockIteratorTest.java
+++ b/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/OpenReadLockIteratorTest.java
@@ -24,7 +24,7 @@ import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.iterators.IteratorEnvironment;
 import org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope;
 import org.apache.accumulo.core.iterators.SortedKeyValueIterator;
-import org.apache.accumulo.core.iterators.SortedMapIterator;
+import org.apache.accumulo.core.iteratorsImpl.system.SortedMapIterator;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/SnapshotIteratorTest.java b/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/SnapshotIteratorTest.java
index aa7af83d..acc7f33a 100644
--- a/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/SnapshotIteratorTest.java
+++ b/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/SnapshotIteratorTest.java
@@ -25,7 +25,7 @@ import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.iterators.IteratorEnvironment;
 import org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope;
 import org.apache.accumulo.core.iterators.SortedKeyValueIterator;
-import org.apache.accumulo.core.iterators.SortedMapIterator;
+import org.apache.accumulo.core.iteratorsImpl.system.SortedMapIterator;
 import org.apache.fluo.accumulo.util.ColumnType;
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/TimeSkippingIteratorTest.java b/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/TimeSkippingIteratorTest.java
index afda08a8..48744b13 100644
--- a/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/TimeSkippingIteratorTest.java
+++ b/modules/accumulo/src/test/java/org/apache/fluo/accumulo/iterators/TimeSkippingIteratorTest.java
@@ -25,7 +25,7 @@ import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.iterators.SortedKeyValueIterator;
-import org.apache.accumulo.core.iterators.SortedMapIterator;
+import org.apache.accumulo.core.iteratorsImpl.system.SortedMapIterator;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/modules/api/pom.xml b/modules/api/pom.xml
index fd356189..d502f682 100644
--- a/modules/api/pom.xml
+++ b/modules/api/pom.xml
@@ -46,8 +46,13 @@
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-slf4j2-impl</artifactId>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/modules/command/pom.xml b/modules/command/pom.xml
index 5ad07416..704d957a 100644
--- a/modules/command/pom.xml
+++ b/modules/command/pom.xml
@@ -63,12 +63,20 @@
       <artifactId>hadoop-client-api</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-api</artifactId>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-1.2-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-slf4j2-impl</artifactId>
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
+      <artifactId>slf4j-api</artifactId>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/modules/core/pom.xml b/modules/core/pom.xml
index 5ed44060..b7bcb2e3 100644
--- a/modules/core/pom.xml
+++ b/modules/core/pom.xml
@@ -78,6 +78,10 @@
       <groupId>org.apache.zookeeper</groupId>
       <artifactId>zookeeper</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.zookeeper</groupId>
+      <artifactId>zookeeper-jute</artifactId>
+    </dependency>
     <dependency>
       <groupId>org.mpierce.metrics.reservoir</groupId>
       <artifactId>hdrhistogram-metrics-reservoir</artifactId>
@@ -92,8 +96,13 @@
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-slf4j2-impl</artifactId>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/modules/core/src/main/java/org/apache/fluo/core/impl/SharedResources.java b/modules/core/src/main/java/org/apache/fluo/core/impl/SharedResources.java
index 308e8321..d1211076 100644
--- a/modules/core/src/main/java/org/apache/fluo/core/impl/SharedResources.java
+++ b/modules/core/src/main/java/org/apache/fluo/core/impl/SharedResources.java
@@ -173,6 +173,10 @@ public class SharedResources implements AutoCloseable {
 
   @Override
   public synchronized void close() {
+    if (isClosed) {
+      return;
+    }
+
     isClosed = true;
 
     if (commitManager != null) {
diff --git a/modules/distribution/src/main/config/fluo-env.sh b/modules/distribution/src/main/config/fluo-env.sh
index 69421881..85d9037f 100755
--- a/modules/distribution/src/main/config/fluo-env.sh
+++ b/modules/distribution/src/main/config/fluo-env.sh
@@ -34,10 +34,8 @@ export FLUO_TMP="${FLUO_TMP:-/tmp}"
 # Build JAVA_OPTS variable used by all Fluo commands
 ####################################################
 
-## Fluo log4j configuration
-export FLUO_LOG4J_CONFIG="${FLUO_LOG4J_CONFIG:-${conf}/log4j.properties}"
 ## Java options along with FLUO_JAVA_OPTS for Fluo command
-JAVA_OPTS=("${FLUO_JAVA_OPTS[@]}" "-Dlog4j.configuration=file:${FLUO_LOG4J_CONFIG}")
+JAVA_OPTS=("${FLUO_JAVA_OPTS[@]}")
 
 
 export JAVA_OPTS
diff --git a/modules/distribution/src/main/config/log4j.properties b/modules/distribution/src/main/config/log4j.properties
deleted file mode 100644
index e042cef3..00000000
--- a/modules/distribution/src/main/config/log4j.properties
+++ /dev/null
@@ -1,30 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-## Log4j 1.2 file that configures logging for Fluo processes
-
-## Define a console appender
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.Target=System.out
-log4j.appender.console.Threshold=ALL
-log4j.appender.console.layout.ConversionPattern=%d{ISO8601} [%-8c{2}] %-5p: %m%n
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-
-## Constrain some particularly spammy loggers
-log4j.logger.org.apache.zookeeper=ERROR
-log4j.logger.org.apache.curator=ERROR
-
-## Append most logs to console
-log4j.rootLogger=INFO, console
diff --git a/modules/distribution/src/main/config/log4j2.properties b/modules/distribution/src/main/config/log4j2.properties
new file mode 100644
index 00000000..85c3f4f3
--- /dev/null
+++ b/modules/distribution/src/main/config/log4j2.properties
@@ -0,0 +1,37 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+# agreements.  See the NOTICE file distributed with this work for additional information regarding
+# copyright ownership.  The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with the License.  You may
+# obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software distributed under the License
+# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+# or implied. See the License for the specific language governing permissions and limitations under
+# the License.
+
+
+status = info
+dest = err
+name = FluoDefaultLoggingProperties
+monitorInterval = 30
+
+appender.console.type = Console
+appender.console.name = STDERR
+appender.console.target = SYSTEM_ERR
+appender.console.layout.type = PatternLayout
+appender.console.layout.pattern = %d{ISO8601} [%-8c{2}] %-5p: %m%n
+
+logger.fluo.name = org.apache.fluo
+logger.fluo.level = debug
+
+logger.zookeeper.name = org.apache.zookeeper
+logger.zookeeper.level = error
+
+logger.curator.name = org.apache.curator
+logger.curator.level = error
+
+rootLogger.level = info
+rootLogger.appenderRef.console.ref = STDERR
+
diff --git a/modules/distribution/src/main/lib/fetch.sh b/modules/distribution/src/main/lib/fetch.sh
index 4cedc82e..3cd9f149 100755
--- a/modules/distribution/src/main/lib/fetch.sh
+++ b/modules/distribution/src/main/lib/fetch.sh
@@ -55,26 +55,27 @@ ahz)
 extra)
   echo "Fetching extra Fluo dependencies"
   download aopalliance:aopalliance:jar:1.0
-  download com.beust:jcommander:jar:1.78
-  download com.google.code.gson:gson:jar:2.8.5
-  download com.google.guava:guava:jar:27.0-jre
-  download com.google.inject:guice:jar:4.2.2
-  download org.apache.commons:commons-collections4:jar:4.2
-  download org.apache.commons:commons-configuration2:jar:2.5
-  download commons-io:commons-io:jar:2.6
-  download io.dropwizard.metrics:metrics-core:jar:3.1.1
-  download io.dropwizard.metrics:metrics-graphite:jar:3.1.1
+  download com.beust:jcommander:jar:1.82
+  download com.google.code.gson:gson:jar:2.9.1
+  download com.google.guava:guava:jar:31.1-jre
+  download com.google.inject:guice:jar:4.2.3
+  download org.apache.commons:commons-collections4:jar:4.4
+  download org.apache.commons:commons-configuration2:jar:2.8.0
+  download commons-io:commons-io:jar:2.11.0
+  download io.dropwizard.metrics:metrics-core:jar:3.2.6
+  download io.dropwizard.metrics:metrics-graphite:jar:3.2.6
   download javax.inject:javax.inject:jar:1
-  download org.apache.curator:curator-client:jar:4.0.1
-  download org.apache.curator:curator-framework:jar:4.0.1
-  download org.apache.curator:curator-recipes:jar:4.0.1
+  download org.apache.curator:curator-client:jar:4.3.0
+  download org.apache.curator:curator-framework:jar:4.3.0
+  download org.apache.curator:curator-recipes:jar:4.3.0
   download org.hdrhistogram:HdrHistogram:jar:2.1.10
   download org.mpierce.metrics.reservoir:hdrhistogram-metrics-reservoir:jar:1.1.0
-  download org.slf4j:jcl-over-slf4j:jar:1.7.2
-  download org.slf4j:slf4j-api:jar:1.7.12
+  download org.slf4j:jcl-over-slf4j:jar:2.0.3
+  download org.slf4j:slf4j-api:jar:2.0.3
 
-  download log4j:log4j:jar:1.2.17 ./log4j
-  download org.slf4j:slf4j-log4j12:jar:1.7.12 ./log4j
+  download org.apache.logging.log4j:log4j-api:jar:2.19.0 ./log4j
+  download org.apache.logging.log4j:log4j-core:jar:2.19.0 ./log4j
+  download org.apache.logging.log4j:log4j-slf4j2-impl:jar:2.19.0 ./log4j
 
   echo -e "Done!\n"
   echo "NOTE - The dependencies downloaded have been tested with some versions of Hadoop, Zookeeper, and Accumulo."
diff --git a/modules/integration-tests/pom.xml b/modules/integration-tests/pom.xml
index b7004345..6f31c5c4 100644
--- a/modules/integration-tests/pom.xml
+++ b/modules/integration-tests/pom.xml
@@ -26,7 +26,7 @@
   <description>This module contains Apache Fluo integration tests</description>
   <properties>
     <!-- accumulo2-maven-plugin requires the accumulo version of thrift -->
-    <thrift.version>0.12.0</thrift.version>
+    <thrift.version>0.17.0</thrift.version>
   </properties>
   <dependencies>
     <dependency>
@@ -77,6 +77,19 @@
       <groupId>org.apache.hadoop</groupId>
       <artifactId>hadoop-client-api</artifactId>
     </dependency>
+    <!--LogIT uses log4j V1 APIs to gather log statemtents to veify their correctness. So here we are loading the log4j V2 api shim for V1.  -->
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-1.2-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-slf4j2-impl</artifactId>
+    </dependency>
     <dependency>
       <groupId>org.apache.zookeeper</groupId>
       <artifactId>zookeeper</artifactId>
@@ -85,10 +98,6 @@
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
-    </dependency>
   </dependencies>
   <build>
     <pluginManagement>
diff --git a/modules/integration-tests/src/main/java/org/apache/fluo/integration/log/LogIT.java b/modules/integration-tests/src/main/java/org/apache/fluo/integration/log/LogIT.java
index 092021cf..52027370 100644
--- a/modules/integration-tests/src/main/java/org/apache/fluo/integration/log/LogIT.java
+++ b/modules/integration-tests/src/main/java/org/apache/fluo/integration/log/LogIT.java
@@ -51,6 +51,7 @@ import org.junit.Assert;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.Timeout;
+import org.slf4j.LoggerFactory;
 
 import static org.apache.fluo.api.observer.Observer.NotificationType.WEAK;
 
@@ -147,17 +148,21 @@ public class LogIT extends ITBaseMini {
 
   @Test
   public void testCollisionLogging() throws Exception {
+
     Logger logger = Logger.getLogger("fluo.tx.collisions");
 
     StringWriter writer = new StringWriter();
     WriterAppender appender = new WriterAppender(new PatternLayout("%p, %m%n"), writer);
 
     Level level = logger.getLevel();
+
     boolean additivity = logger.getAdditivity();
+
     try {
-      logger.setLevel(Level.TRACE);
-      logger.setAdditivity(false);
+      // set appender first, it seems to reset the log level when setting it
       logger.addAppender(appender);
+      logger.setAdditivity(false);
+      logger.setLevel(Level.TRACE);
 
       try (LoaderExecutor le = client.newLoaderExecutor()) {
         for (int i = 0; i < 20; i++) {
@@ -174,6 +179,7 @@ public class LogIT extends ITBaseMini {
     }
 
     String logMsgs = writer.toString();
+
     logMsgs = logMsgs.replace('\n', ' ');
 
     Assert.assertFalse(logMsgs.contains("TriggerLoader"));
@@ -187,6 +193,7 @@ public class LogIT extends ITBaseMini {
     pattern = ".*txid: (\\d+) trigger: \\d+ stat count  \\d+";
     pattern += ".*txid: \\1 class: org.apache.fluo.integration.log.LogIT\\$TestObserver";
     pattern += ".*txid: \\1 collisions: \\Q[all=[stat count ]]\\E.*";
+
     Assert.assertTrue(logMsgs.matches(pattern));
   }
 
@@ -201,9 +208,9 @@ public class LogIT extends ITBaseMini {
     boolean additivity = logger.getAdditivity();
 
     try {
+      logger.addAppender(appender);
       logger.setLevel(Level.TRACE);
       logger.setAdditivity(false);
-      logger.addAppender(appender);
 
       try (LoaderExecutor le = client.newLoaderExecutor()) {
         for (int i = 0; i < 20; i++) {
@@ -251,9 +258,9 @@ public class LogIT extends ITBaseMini {
     boolean additivity = logger.getAdditivity();
 
     try {
+      logger.addAppender(appender);
       logger.setLevel(Level.TRACE);
       logger.setAdditivity(false);
-      logger.addAppender(appender);
 
       try (LoaderExecutor le = client.newLoaderExecutor()) {
         le.execute(new SimpleLoader());
@@ -343,9 +350,9 @@ public class LogIT extends ITBaseMini {
     boolean additivity = logger.getAdditivity();
 
     try {
+      logger.addAppender(appender);
       logger.setLevel(Level.TRACE);
       logger.setAdditivity(false);
-      logger.addAppender(appender);
 
       try (Snapshot snap = client.newSnapshot()) {
         Map<RowColumn, String> ret1 =
@@ -413,9 +420,9 @@ public class LogIT extends ITBaseMini {
     boolean additivity = logger.getAdditivity();
 
     try {
+      logger.addAppender(appender);
       logger.setLevel(Level.TRACE);
       logger.setAdditivity(false);
-      logger.addAppender(appender);
 
       try (LoaderExecutor le = client.newLoaderExecutor()) {
         le.execute(new BinaryLoader1());
@@ -497,6 +504,7 @@ public class LogIT extends ITBaseMini {
     }
 
     Logger logger = Logger.getLogger("fluo.tx");
+    Logger scanLogger = Logger.getLogger("fluo.tx.scan");
 
     StringWriter writer = new StringWriter();
     WriterAppender appender =
@@ -504,11 +512,13 @@ public class LogIT extends ITBaseMini {
 
     Level level = logger.getLevel();
     boolean additivity = logger.getAdditivity();
+    Level scanLevel = scanLogger.getLevel();
 
     try {
+      logger.addAppender(appender);
       logger.setLevel(Level.TRACE);
       logger.setAdditivity(false);
-      logger.addAppender(appender);
+      scanLogger.setLevel(Level.TRACE);
 
       try (Snapshot snap = client.newSnapshot()) {
         RowColumnValue rcv1 = new RowColumnValue("r1", c1, "v1");
@@ -547,6 +557,7 @@ public class LogIT extends ITBaseMini {
       logger.removeAppender(appender);
       logger.setAdditivity(additivity);
       logger.setLevel(level);
+      scanLogger.setLevel(scanLevel);
     }
 
     String pattern = "";
@@ -618,9 +629,9 @@ public class LogIT extends ITBaseMini {
     boolean additivity = logger.getAdditivity();
 
     try {
+      logger.addAppender(appender);
       logger.setLevel(Level.TRACE);
       logger.setAdditivity(false);
-      logger.addAppender(appender);
 
       try (Transaction tx = client.newTransaction()) {
         Assert.assertEquals("v1", tx.withReadLock().gets("r1", c1));
diff --git a/modules/mapreduce/pom.xml b/modules/mapreduce/pom.xml
index ae9f802c..771ea3a3 100644
--- a/modules/mapreduce/pom.xml
+++ b/modules/mapreduce/pom.xml
@@ -27,7 +27,7 @@
     Apache Fluo table.</description>
   <properties>
     <!-- accumulo2-maven-plugin requires the accumulo version of thrift -->
-    <thrift.version>0.12.0</thrift.version>
+    <thrift.version>0.17.0</thrift.version>
   </properties>
   <dependencies>
     <dependency>
@@ -66,8 +66,13 @@
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-slf4j2-impl</artifactId>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/pom.xml b/pom.xml
index aaa8efe2..5e5c9b4c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -57,24 +57,24 @@
     <url>https://github.com/apache/fluo/actions</url>
   </ciManagement>
   <properties>
-    <accumulo.version>2.0.1</accumulo.version>
-    <curator.version>4.0.1</curator.version>
+    <accumulo.version>2.1.0</accumulo.version>
+    <curator.version>4.3.0</curator.version>
     <dropwizard.version>0.8.1</dropwizard.version>
     <extraReleaseArguments>-P thrift</extraReleaseArguments>
     <!-- Prevent findbugs from runnning because it does not work with Java 11 and is configured to run by parent pom.  Spotbugs is configured in place of findbugs. -->
     <findbugs.skip>true</findbugs.skip>
-    <hadoop.version>3.1.1</hadoop.version>
+    <hadoop.version>3.3.4</hadoop.version>
     <releaseProfiles>fluo-release</releaseProfiles>
-    <slf4j.version>1.7.12</slf4j.version>
-    <thrift.version>0.16.0</thrift.version>
-    <zookeeper.version>3.4.14</zookeeper.version>
+    <slf4j.version>2.0.3</slf4j.version>
+    <thrift.version>0.17.0</thrift.version>
+    <zookeeper.version>3.8.0</zookeeper.version>
   </properties>
   <dependencyManagement>
     <dependencies>
       <dependency>
         <groupId>com.beust</groupId>
         <artifactId>jcommander</artifactId>
-        <version>1.78</version>
+        <version>1.82</version>
       </dependency>
       <dependency>
         <groupId>com.github.spotbugs</groupId>
@@ -84,7 +84,7 @@
       <dependency>
         <groupId>com.google.code.gson</groupId>
         <artifactId>gson</artifactId>
-        <version>2.8.9</version>
+        <version>2.9.1</version>
       </dependency>
       <dependency>
         <groupId>com.google.guava</groupId>
@@ -94,22 +94,22 @@
       <dependency>
         <groupId>commons-io</groupId>
         <artifactId>commons-io</artifactId>
-        <version>2.7</version>
+        <version>2.11.0</version>
       </dependency>
       <dependency>
         <groupId>io.dropwizard.metrics</groupId>
         <artifactId>metrics-core</artifactId>
-        <version>3.1.1</version>
+        <version>3.2.6</version>
       </dependency>
       <dependency>
         <groupId>io.dropwizard.metrics</groupId>
         <artifactId>metrics-graphite</artifactId>
-        <version>3.1.1</version>
+        <version>3.2.6</version>
       </dependency>
       <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
-        <version>4.13.1</version>
+        <version>4.13.2</version>
       </dependency>
       <dependency>
         <groupId>org.apache.accumulo</groupId>
@@ -134,7 +134,7 @@
       <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-collections4</artifactId>
-        <version>4.2</version>
+        <version>4.4</version>
       </dependency>
       <dependency>
         <groupId>org.apache.commons</groupId>
@@ -216,6 +216,11 @@
         <artifactId>zookeeper</artifactId>
         <version>${zookeeper.version}</version>
       </dependency>
+      <dependency>
+        <groupId>org.apache.zookeeper</groupId>
+        <artifactId>zookeeper-jute</artifactId>
+        <version>${zookeeper.version}</version>
+      </dependency>
       <dependency>
         <groupId>org.easymock</groupId>
         <artifactId>easymock</artifactId>
@@ -237,9 +242,11 @@
         <version>${slf4j.version}</version>
       </dependency>
       <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-log4j12</artifactId>
-        <version>${slf4j.version}</version>
+        <groupId>org.apache.logging.log4j</groupId>
+        <artifactId>log4j-bom</artifactId>
+        <version>2.19.0</version>
+        <type>pom</type>
+        <scope>import</scope>
       </dependency>
     </dependencies>
   </dependencyManagement>
@@ -384,8 +391,7 @@
             <configuration>
               <failOnWarning>true</failOnWarning>
               <ignoredDependencies>
-                <ignoredDependency>log4j:log4j:jar:*</ignoredDependency>
-                <ignoredDependency>org.slf4j:slf4j-log4j12:jar:${slf4j.version}</ignoredDependency>
+                <ignoredDependency>org.apache.logging.log4j:*</ignoredDependency>
               </ignoredDependencies>
             </configuration>
           </execution>