You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by mm...@apache.org on 2019/07/12 17:10:39 UTC

[accumulo] branch master updated: Upgrade to Commons Lang3 (#1263)

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

mmiller pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/master by this push:
     new f5314b7  Upgrade to Commons Lang3 (#1263)
f5314b7 is described below

commit f5314b7e2a49cd315a16a72fe93c6828f4c7ba98
Author: Mike Miller <mm...@apache.org>
AuthorDate: Fri Jul 12 13:10:34 2019 -0400

    Upgrade to Commons Lang3 (#1263)
    
    * Replace StringUtils where appropriate
    * Replace IntRange with Range<Integer>
    * Replace NotImplementedException with UnsupportedOperationException
    * Drop dependency where no longer used
---
 assemble/pom.xml                                       |  5 -----
 assemble/src/main/assemblies/component.xml             |  1 -
 core/pom.xml                                           |  8 ++++----
 .../core/client/AccumuloSecurityException.java         |  2 +-
 .../apache/accumulo/core/client/BatchWriterConfig.java |  2 +-
 .../core/client/summary/CountingSummarizer.java        |  2 +-
 .../core/clientImpl/AuthenticationTokenIdentifier.java |  2 +-
 .../core/clientImpl/ConditionalWriterImpl.java         |  2 +-
 .../org/apache/accumulo/core/conf/PropertyType.java    |  7 +++----
 .../org/apache/accumulo/core/file/rfile/RFile.java     |  2 +-
 .../core/iterators/FirstEntryInRowIterator.java        |  2 +-
 .../org/apache/accumulo/core/iterators/OrIterator.java |  3 +--
 .../core/iterators/system/LocalityGroupIterator.java   |  2 +-
 .../core/rpc/SaslClientDigestCallbackHandler.java      |  2 +-
 .../apache/accumulo/core/rpc/SaslConnectionParams.java |  2 +-
 .../apache/accumulo/core/rpc/SslConnectionParams.java  |  5 ++---
 .../apache/accumulo/core/util/LocalityGroupUtil.java   |  2 +-
 .../fate/zookeeper/DistributedReadWriteLock.java       |  3 +--
 .../org/apache/accumulo/fate/zookeeper/ZooUtil.java    |  2 +-
 .../clientImpl/lexicoder/AbstractLexicoderTest.java    |  2 +-
 .../core/file/rfile/MultiThreadedRFileTest.java        |  2 +-
 .../org/apache/accumulo/core/util/PartitionerTest.java |  2 +-
 .../java/org/apache/accumulo/fate/SimpleStore.java     | 18 ++++++++----------
 minicluster/pom.xml                                    |  4 ----
 .../java/org/apache/accumulo/cluster/RemoteShell.java  |  3 +--
 .../cluster/standalone/StandaloneClusterControl.java   |  3 +--
 pom.xml                                                |  5 -----
 server/base/pom.xml                                    |  8 ++++----
 .../accumulo/server/fs/PreferredVolumeChooser.java     |  5 ++---
 .../accumulo/server/fs/SpaceAwareVolumeChooser.java    |  2 +-
 .../apache/accumulo/server/fs/VolumeManagerImpl.java   |  8 +++-----
 .../org/apache/accumulo/server/init/Initialize.java    |  2 +-
 .../accumulo/server/master/balancer/GroupBalancer.java |  2 +-
 .../master/balancer/HostRegexTableLoadBalancer.java    |  4 ++--
 .../server/master/state/ZooTabletStateStore.java       |  3 +--
 .../org/apache/accumulo/server/metrics/Metrics.java    |  3 +--
 .../apache/accumulo/server/rpc/ThriftServerType.java   |  2 +-
 .../accumulo/server/security/UserImpersonation.java    | 15 +++++++--------
 .../server/security/delegation/AuthenticationKey.java  |  2 +-
 .../apache/accumulo/server/tables/TableManager.java    |  3 +--
 .../accumulo/server/client/BulkImporterTest.java       | 11 +++++------
 .../accumulo/server/fs/VolumeManagerImplTest.java      |  5 ++---
 server/monitor/pom.xml                                 |  4 ----
 .../org/apache/accumulo/monitor/EmbeddedWebServer.java |  7 +++----
 .../apache/accumulo/monitor/rest/logs/LogResource.java |  5 +++--
 .../monitor/rest/problems/ProblemsResource.java        |  5 ++---
 .../accumulo/monitor/rest/tables/TablesResource.java   |  3 +--
 .../accumulo/monitor/rest/trace/TracesResource.java    |  5 -----
 .../org/apache/accumulo/monitor/view/WebViews.java     |  8 +++-----
 server/tracer/pom.xml                                  |  4 ----
 .../org/apache/accumulo/tracer/TraceFormatter.java     |  3 +--
 server/tserver/pom.xml                                 |  8 ++++----
 .../java/org/apache/accumulo/tserver/InMemoryMap.java  |  2 +-
 .../tserver/replication/AccumuloReplicaSystem.java     |  3 +--
 shell/pom.xml                                          |  4 ----
 .../accumulo/shell/commands/GetAuthsCommand.java       |  3 +--
 .../apache/accumulo/shell/commands/SetIterCommand.java | 12 +++++-------
 .../accumulo/shell/commands/SetIterCommandTest.java    |  2 ++
 test/pom.xml                                           |  8 ++++----
 .../java/org/apache/accumulo/test/ShellServerIT.java   |  8 ++++----
 .../java/org/apache/accumulo/test/YieldScannersIT.java |  5 ++---
 .../functional/BalanceInPresenceOfOfflineTableIT.java  |  2 +-
 .../accumulo/test/mrit/IntegrationTestMapReduce.java   |  3 +--
 .../accumulo/test/replication/MockReplicaSystem.java   |  3 +--
 64 files changed, 109 insertions(+), 168 deletions(-)

diff --git a/assemble/pom.xml b/assemble/pom.xml
index c5d6a00..55d2f65 100644
--- a/assemble/pom.xml
+++ b/assemble/pom.xml
@@ -113,11 +113,6 @@
       <optional>true</optional>
     </dependency>
     <dependency>
-      <groupId>commons-lang</groupId>
-      <artifactId>commons-lang</artifactId>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
       <groupId>commons-logging</groupId>
       <artifactId>commons-logging</artifactId>
       <optional>true</optional>
diff --git a/assemble/src/main/assemblies/component.xml b/assemble/src/main/assemblies/component.xml
index a4a1e1b..bdefd20 100644
--- a/assemble/src/main/assemblies/component.xml
+++ b/assemble/src/main/assemblies/component.xml
@@ -46,7 +46,6 @@
         <include>commons-cli:commons-cli</include>
         <include>commons-codec:commons-codec</include>
         <include>commons-io:commons-io</include>
-        <include>commons-lang:commons-lang</include>
         <include>commons-logging:commons-logging</include>
         <include>javax.activation:javax.activation-api</include>
         <include>javax.annotation:javax.annotation-api</include>
diff --git a/core/pom.xml b/core/pom.xml
index 0da79fe..748f078 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -56,10 +56,6 @@
       <artifactId>commons-io</artifactId>
     </dependency>
     <dependency>
-      <groupId>commons-lang</groupId>
-      <artifactId>commons-lang</artifactId>
-    </dependency>
-    <dependency>
       <groupId>commons-logging</groupId>
       <artifactId>commons-logging</artifactId>
     </dependency>
@@ -85,6 +81,10 @@
     </dependency>
     <dependency>
       <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
       <artifactId>commons-math3</artifactId>
     </dependency>
     <dependency>
diff --git a/core/src/main/java/org/apache/accumulo/core/client/AccumuloSecurityException.java b/core/src/main/java/org/apache/accumulo/core/client/AccumuloSecurityException.java
index 9a126c7..257b17c 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/AccumuloSecurityException.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/AccumuloSecurityException.java
@@ -18,7 +18,7 @@ package org.apache.accumulo.core.client;
 
 import org.apache.accumulo.core.clientImpl.thrift.SecurityErrorCode;
 import org.apache.accumulo.core.clientImpl.thrift.ThriftSecurityException;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 /**
  * An Accumulo Exception for security violations, authentication failures, authorization failures,
diff --git a/core/src/main/java/org/apache/accumulo/core/client/BatchWriterConfig.java b/core/src/main/java/org/apache/accumulo/core/client/BatchWriterConfig.java
index d180475..2763752 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/BatchWriterConfig.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/BatchWriterConfig.java
@@ -31,7 +31,7 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.accumulo.core.clientImpl.DurabilityImpl;
 import org.apache.accumulo.core.conf.ConfigurationTypeHelper;
-import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.hadoop.io.Writable;
 import org.apache.hadoop.util.StringUtils;
 
diff --git a/core/src/main/java/org/apache/accumulo/core/client/summary/CountingSummarizer.java b/core/src/main/java/org/apache/accumulo/core/client/summary/CountingSummarizer.java
index 6bb9dcd..6351512 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/summary/CountingSummarizer.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/summary/CountingSummarizer.java
@@ -28,7 +28,7 @@ import java.util.stream.Collectors;
 import org.apache.accumulo.core.client.summary.summarizers.VisibilitySummarizer;
 import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.Value;
-import org.apache.commons.lang.mutable.MutableLong;
+import org.apache.commons.lang3.mutable.MutableLong;
 
 /**
  * This class counts arbitrary keys while defending against too many keys and keys that are too
diff --git a/core/src/main/java/org/apache/accumulo/core/clientImpl/AuthenticationTokenIdentifier.java b/core/src/main/java/org/apache/accumulo/core/clientImpl/AuthenticationTokenIdentifier.java
index ed4fd95..3f83ba5 100644
--- a/core/src/main/java/org/apache/accumulo/core/clientImpl/AuthenticationTokenIdentifier.java
+++ b/core/src/main/java/org/apache/accumulo/core/clientImpl/AuthenticationTokenIdentifier.java
@@ -27,7 +27,7 @@ import org.apache.accumulo.core.client.admin.DelegationTokenConfig;
 import org.apache.accumulo.core.securityImpl.thrift.TAuthenticationTokenIdentifier;
 import org.apache.accumulo.core.util.ByteBufferUtil;
 import org.apache.accumulo.core.util.ThriftMessageUtil;
-import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.hadoop.io.Text;
 import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.hadoop.security.token.Token;
diff --git a/core/src/main/java/org/apache/accumulo/core/clientImpl/ConditionalWriterImpl.java b/core/src/main/java/org/apache/accumulo/core/clientImpl/ConditionalWriterImpl.java
index 8439c1c..4d2deb6 100644
--- a/core/src/main/java/org/apache/accumulo/core/clientImpl/ConditionalWriterImpl.java
+++ b/core/src/main/java/org/apache/accumulo/core/clientImpl/ConditionalWriterImpl.java
@@ -81,7 +81,7 @@ import org.apache.accumulo.fate.util.LoggingRunnable;
 import org.apache.accumulo.fate.zookeeper.ZooLock;
 import org.apache.accumulo.fate.zookeeper.ZooUtil.LockID;
 import org.apache.commons.collections4.map.LRUMap;
-import org.apache.commons.lang.mutable.MutableLong;
+import org.apache.commons.lang3.mutable.MutableLong;
 import org.apache.hadoop.io.Text;
 import org.apache.htrace.Trace;
 import org.apache.thrift.TApplicationException;
diff --git a/core/src/main/java/org/apache/accumulo/core/conf/PropertyType.java b/core/src/main/java/org/apache/accumulo/core/conf/PropertyType.java
index 64b19c8..ed9f51c 100644
--- a/core/src/main/java/org/apache/accumulo/core/conf/PropertyType.java
+++ b/core/src/main/java/org/apache/accumulo/core/conf/PropertyType.java
@@ -26,7 +26,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.apache.accumulo.core.util.Pair;
-import org.apache.commons.lang.math.IntRange;
+import org.apache.commons.lang3.Range;
 import org.apache.hadoop.fs.Path;
 
 import com.google.common.base.Preconditions;
@@ -307,7 +307,7 @@ public enum PropertyType {
 
   public static class PortRange extends Matches {
 
-    private static final IntRange VALID_RANGE = new IntRange(1024, 65535);
+    private static final Range<Integer> VALID_RANGE = Range.between(1024, 65535);
 
     public PortRange(final String pattern) {
       super(pattern);
@@ -332,8 +332,7 @@ public enum PropertyType {
       if (idx != -1) {
         int low = Integer.parseInt(portRange.substring(0, idx));
         int high = Integer.parseInt(portRange.substring(idx + 1));
-        if (!VALID_RANGE.containsInteger(low) || !VALID_RANGE.containsInteger(high)
-            || !(low <= high)) {
+        if (!VALID_RANGE.contains(low) || !VALID_RANGE.contains(high) || low > high) {
           throw new IllegalArgumentException(
               "Invalid port range specified, only 1024 to 65535 supported.");
         }
diff --git a/core/src/main/java/org/apache/accumulo/core/file/rfile/RFile.java b/core/src/main/java/org/apache/accumulo/core/file/rfile/RFile.java
index 9bf63c4..cdbfd4f 100644
--- a/core/src/main/java/org/apache/accumulo/core/file/rfile/RFile.java
+++ b/core/src/main/java/org/apache/accumulo/core/file/rfile/RFile.java
@@ -71,7 +71,7 @@ import org.apache.accumulo.core.iterators.system.LocalityGroupIterator.LocalityG
 import org.apache.accumulo.core.sample.impl.SamplerConfigurationImpl;
 import org.apache.accumulo.core.util.LocalityGroupUtil;
 import org.apache.accumulo.core.util.MutableByteSequence;
-import org.apache.commons.lang.mutable.MutableLong;
+import org.apache.commons.lang3.mutable.MutableLong;
 import org.apache.hadoop.io.Writable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/core/src/main/java/org/apache/accumulo/core/iterators/FirstEntryInRowIterator.java b/core/src/main/java/org/apache/accumulo/core/iterators/FirstEntryInRowIterator.java
index d2d2426..77d34f1 100644
--- a/core/src/main/java/org/apache/accumulo/core/iterators/FirstEntryInRowIterator.java
+++ b/core/src/main/java/org/apache/accumulo/core/iterators/FirstEntryInRowIterator.java
@@ -27,7 +27,7 @@ import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.PartialKey;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
-import org.apache.commons.lang.math.NumberUtils;
+import org.apache.commons.lang3.math.NumberUtils;
 import org.apache.hadoop.io.Text;
 
 public class FirstEntryInRowIterator extends SkippingIterator implements OptionDescriber {
diff --git a/core/src/main/java/org/apache/accumulo/core/iterators/OrIterator.java b/core/src/main/java/org/apache/accumulo/core/iterators/OrIterator.java
index c90aa25..b18389c 100644
--- a/core/src/main/java/org/apache/accumulo/core/iterators/OrIterator.java
+++ b/core/src/main/java/org/apache/accumulo/core/iterators/OrIterator.java
@@ -33,7 +33,6 @@ 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.commons.lang.StringUtils;
 import org.apache.hadoop.io.Text;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -305,7 +304,7 @@ public class OrIterator implements SortedKeyValueIterator<Key,Value>, OptionDesc
       throw new IllegalArgumentException(
           COLUMNS_KEY + " was not provided in the iterator configuration");
     }
-    String[] columns = StringUtils.split(columnsValue, ',');
+    String[] columns = columnsValue.split(",");
     setTerms(source, Arrays.asList(columns), env);
     LOG.trace("Set sources: {}", this.sources);
   }
diff --git a/core/src/main/java/org/apache/accumulo/core/iterators/system/LocalityGroupIterator.java b/core/src/main/java/org/apache/accumulo/core/iterators/system/LocalityGroupIterator.java
index b9659b5..c6f9581 100644
--- a/core/src/main/java/org/apache/accumulo/core/iterators/system/LocalityGroupIterator.java
+++ b/core/src/main/java/org/apache/accumulo/core/iterators/system/LocalityGroupIterator.java
@@ -34,7 +34,7 @@ import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.iterators.IteratorEnvironment;
 import org.apache.accumulo.core.iterators.SortedKeyValueIterator;
-import org.apache.commons.lang.mutable.MutableLong;
+import org.apache.commons.lang3.mutable.MutableLong;
 
 public class LocalityGroupIterator extends HeapIterator implements InterruptibleIterator {
 
diff --git a/core/src/main/java/org/apache/accumulo/core/rpc/SaslClientDigestCallbackHandler.java b/core/src/main/java/org/apache/accumulo/core/rpc/SaslClientDigestCallbackHandler.java
index 7773b8e..d9e7824 100644
--- a/core/src/main/java/org/apache/accumulo/core/rpc/SaslClientDigestCallbackHandler.java
+++ b/core/src/main/java/org/apache/accumulo/core/rpc/SaslClientDigestCallbackHandler.java
@@ -28,7 +28,7 @@ import javax.security.sasl.RealmCallback;
 import javax.security.sasl.RealmChoiceCallback;
 
 import org.apache.accumulo.core.clientImpl.DelegationTokenImpl;
-import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/core/src/main/java/org/apache/accumulo/core/rpc/SaslConnectionParams.java b/core/src/main/java/org/apache/accumulo/core/rpc/SaslConnectionParams.java
index fad8812..d920e2f 100644
--- a/core/src/main/java/org/apache/accumulo/core/rpc/SaslConnectionParams.java
+++ b/core/src/main/java/org/apache/accumulo/core/rpc/SaslConnectionParams.java
@@ -34,7 +34,7 @@ import org.apache.accumulo.core.clientImpl.DelegationTokenImpl;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.ClientProperty;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.hadoop.security.authentication.util.KerberosUtil;
 import org.slf4j.Logger;
diff --git a/core/src/main/java/org/apache/accumulo/core/rpc/SslConnectionParams.java b/core/src/main/java/org/apache/accumulo/core/rpc/SslConnectionParams.java
index 2fbfb55..93700fd 100644
--- a/core/src/main/java/org/apache/accumulo/core/rpc/SslConnectionParams.java
+++ b/core/src/main/java/org/apache/accumulo/core/rpc/SslConnectionParams.java
@@ -23,7 +23,6 @@ import java.util.Arrays;
 
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.commons.lang.StringUtils;
 import org.apache.thrift.transport.TSSLTransportFactory.TSSLTransportParameters;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -80,11 +79,11 @@ public class SslConnectionParams {
 
     String ciphers = conf.get(Property.RPC_SSL_CIPHER_SUITES);
     if (ciphers != null && !ciphers.isEmpty()) {
-      result.cipherSuites = StringUtils.split(ciphers, ',');
+      result.cipherSuites = ciphers.split(",");
     }
 
     String enabledProtocols = conf.get(Property.RPC_SSL_ENABLED_PROTOCOLS);
-    result.serverProtocols = StringUtils.split(enabledProtocols, ',');
+    result.serverProtocols = enabledProtocols.split(",");
 
     result.clientProtocol = conf.get(Property.RPC_SSL_CLIENT_PROTOCOL);
 
diff --git a/core/src/main/java/org/apache/accumulo/core/util/LocalityGroupUtil.java b/core/src/main/java/org/apache/accumulo/core/util/LocalityGroupUtil.java
index f2b942a..e9d5abd 100644
--- a/core/src/main/java/org/apache/accumulo/core/util/LocalityGroupUtil.java
+++ b/core/src/main/java/org/apache/accumulo/core/util/LocalityGroupUtil.java
@@ -43,7 +43,7 @@ import org.apache.accumulo.core.data.TableId;
 import org.apache.accumulo.core.dataImpl.thrift.TMutation;
 import org.apache.accumulo.core.file.FileSKVIterator;
 import org.apache.accumulo.core.file.rfile.RFile.Reader;
-import org.apache.commons.lang.mutable.MutableLong;
+import org.apache.commons.lang3.mutable.MutableLong;
 import org.apache.hadoop.io.Text;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/core/src/main/java/org/apache/accumulo/fate/zookeeper/DistributedReadWriteLock.java b/core/src/main/java/org/apache/accumulo/fate/zookeeper/DistributedReadWriteLock.java
index c49b793..90e1dfa 100644
--- a/core/src/main/java/org/apache/accumulo/fate/zookeeper/DistributedReadWriteLock.java
+++ b/core/src/main/java/org/apache/accumulo/fate/zookeeper/DistributedReadWriteLock.java
@@ -27,7 +27,6 @@ import java.util.concurrent.locks.Condition;
 import java.util.concurrent.locks.Lock;
 
 import org.apache.accumulo.fate.util.UtilWaitThread;
-import org.apache.commons.lang.NotImplementedException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -189,7 +188,7 @@ public class DistributedReadWriteLock implements java.util.concurrent.locks.Read
 
     @Override
     public Condition newCondition() {
-      throw new NotImplementedException();
+      throw new UnsupportedOperationException();
     }
   }
 
diff --git a/core/src/main/java/org/apache/accumulo/fate/zookeeper/ZooUtil.java b/core/src/main/java/org/apache/accumulo/fate/zookeeper/ZooUtil.java
index 52b3dd9..e3cc8d7 100644
--- a/core/src/main/java/org/apache/accumulo/fate/zookeeper/ZooUtil.java
+++ b/core/src/main/java/org/apache/accumulo/fate/zookeeper/ZooUtil.java
@@ -36,7 +36,7 @@ import org.apache.accumulo.core.util.OpTimer;
 import org.apache.accumulo.core.volume.VolumeConfiguration;
 import org.apache.accumulo.fate.util.Retry;
 import org.apache.accumulo.fate.util.Retry.RetryFactory;
-import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.FileSystem;
diff --git a/core/src/test/java/org/apache/accumulo/core/clientImpl/lexicoder/AbstractLexicoderTest.java b/core/src/test/java/org/apache/accumulo/core/clientImpl/lexicoder/AbstractLexicoderTest.java
index f3549b1..8f1ffb1 100644
--- a/core/src/test/java/org/apache/accumulo/core/clientImpl/lexicoder/AbstractLexicoderTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/clientImpl/lexicoder/AbstractLexicoderTest.java
@@ -20,7 +20,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
 import org.apache.accumulo.core.client.lexicoder.LexicoderTest;
-import org.apache.commons.lang.ArrayUtils;
+import org.apache.commons.lang3.ArrayUtils;
 
 /**
  * Assists in Testing classes that extend
diff --git a/core/src/test/java/org/apache/accumulo/core/file/rfile/MultiThreadedRFileTest.java b/core/src/test/java/org/apache/accumulo/core/file/rfile/MultiThreadedRFileTest.java
index c35e0d2..855d73b 100644
--- a/core/src/test/java/org/apache/accumulo/core/file/rfile/MultiThreadedRFileTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/file/rfile/MultiThreadedRFileTest.java
@@ -56,7 +56,7 @@ import org.apache.accumulo.core.iterators.system.ColumnFamilySkippingIterator;
 import org.apache.accumulo.core.sample.impl.SamplerConfigurationImpl;
 import org.apache.accumulo.core.sample.impl.SamplerFactory;
 import org.apache.accumulo.core.util.NamingThreadFactory;
-import org.apache.commons.lang.mutable.MutableInt;
+import org.apache.commons.lang3.mutable.MutableInt;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FSDataOutputStream;
 import org.apache.hadoop.fs.FileSystem;
diff --git a/core/src/test/java/org/apache/accumulo/core/util/PartitionerTest.java b/core/src/test/java/org/apache/accumulo/core/util/PartitionerTest.java
index 1cd8dc1..dc0a5ac 100644
--- a/core/src/test/java/org/apache/accumulo/core/util/PartitionerTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/util/PartitionerTest.java
@@ -32,7 +32,7 @@ import org.apache.accumulo.core.data.ColumnUpdate;
 import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.util.LocalityGroupUtil.Partitioner;
-import org.apache.commons.lang.mutable.MutableLong;
+import org.apache.commons.lang3.mutable.MutableLong;
 import org.junit.Test;
 
 public class PartitionerTest {
diff --git a/core/src/test/java/org/apache/accumulo/fate/SimpleStore.java b/core/src/test/java/org/apache/accumulo/fate/SimpleStore.java
index 03ffd8d..b244e9e 100644
--- a/core/src/test/java/org/apache/accumulo/fate/SimpleStore.java
+++ b/core/src/test/java/org/apache/accumulo/fate/SimpleStore.java
@@ -25,8 +25,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import org.apache.commons.lang.NotImplementedException;
-
 /**
  * Transient in memory store for transactions.
  */
@@ -44,7 +42,7 @@ public class SimpleStore<T> implements TStore<T> {
 
   @Override
   public long reserve() {
-    throw new NotImplementedException();
+    throw new UnsupportedOperationException();
   }
 
   @Override
@@ -64,17 +62,17 @@ public class SimpleStore<T> implements TStore<T> {
 
   @Override
   public Repo<T> top(long tid) {
-    throw new NotImplementedException();
+    throw new UnsupportedOperationException();
   }
 
   @Override
   public void push(long tid, Repo<T> repo) {
-    throw new NotImplementedException();
+    throw new UnsupportedOperationException();
   }
 
   @Override
   public void pop(long tid) {
-    throw new NotImplementedException();
+    throw new UnsupportedOperationException();
   }
 
   @Override
@@ -100,17 +98,17 @@ public class SimpleStore<T> implements TStore<T> {
   @Override
   public org.apache.accumulo.fate.TStore.TStatus waitForStatusChange(long tid,
       EnumSet<org.apache.accumulo.fate.TStore.TStatus> expected) {
-    throw new NotImplementedException();
+    throw new UnsupportedOperationException();
   }
 
   @Override
   public void setProperty(long tid, String prop, Serializable val) {
-    throw new NotImplementedException();
+    throw new UnsupportedOperationException();
   }
 
   @Override
   public Serializable getProperty(long tid, String prop) {
-    throw new NotImplementedException();
+    throw new UnsupportedOperationException();
   }
 
   @Override
@@ -127,7 +125,7 @@ public class SimpleStore<T> implements TStore<T> {
 
   @Override
   public List<ReadOnlyRepo<T>> getStack(long tid) {
-    throw new NotImplementedException();
+    throw new UnsupportedOperationException();
   }
 
 }
diff --git a/minicluster/pom.xml b/minicluster/pom.xml
index 1085cc4..f62778f 100644
--- a/minicluster/pom.xml
+++ b/minicluster/pom.xml
@@ -44,10 +44,6 @@
       <artifactId>commons-io</artifactId>
     </dependency>
     <dependency>
-      <groupId>commons-lang</groupId>
-      <artifactId>commons-lang</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.accumulo</groupId>
       <artifactId>accumulo-core</artifactId>
     </dependency>
diff --git a/minicluster/src/main/java/org/apache/accumulo/cluster/RemoteShell.java b/minicluster/src/main/java/org/apache/accumulo/cluster/RemoteShell.java
index 0a829e9..2a41a83 100644
--- a/minicluster/src/main/java/org/apache/accumulo/cluster/RemoteShell.java
+++ b/minicluster/src/main/java/org/apache/accumulo/cluster/RemoteShell.java
@@ -22,7 +22,6 @@ import java.io.File;
 import java.io.IOException;
 import java.util.Map;
 
-import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.util.Shell.ShellCommandExecutor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -79,7 +78,7 @@ public class RemoteShell extends ShellCommandExecutor {
       hostWithUser = options.getUserName() + "@" + hostWithUser;
     }
 
-    String remoteCmd = StringUtils.join(super.getExecString(), ' ');
+    String remoteCmd = String.join(" ", super.getExecString());
 
     String cmd = String.format("%1$s %2$s %3$s \"%4$s\"", options.getSshCommand(),
         options.getSshOptions(), hostWithUser, remoteCmd);
diff --git a/minicluster/src/main/java/org/apache/accumulo/cluster/standalone/StandaloneClusterControl.java b/minicluster/src/main/java/org/apache/accumulo/cluster/standalone/StandaloneClusterControl.java
index 8c43f6c..33b5a4d 100644
--- a/minicluster/src/main/java/org/apache/accumulo/cluster/standalone/StandaloneClusterControl.java
+++ b/minicluster/src/main/java/org/apache/accumulo/cluster/standalone/StandaloneClusterControl.java
@@ -35,7 +35,6 @@ import org.apache.accumulo.core.master.thrift.MasterGoalState;
 import org.apache.accumulo.master.state.SetGoalState;
 import org.apache.accumulo.minicluster.ServerType;
 import org.apache.accumulo.server.util.Admin;
-import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.util.Shell.ExitCodeException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -114,7 +113,7 @@ public class StandaloneClusterControl implements ClusterControl {
     for (String arg : args) {
       cmd.add("'" + arg + "'");
     }
-    log.info("Running: '{}' on {}", sanitize(StringUtils.join(cmd, " ")), sanitize(master));
+    log.info("Running: '{}' on {}", sanitize(String.join(" ", cmd)), sanitize(master));
     return exec(master, cmd.toArray(new String[cmd.size()]));
   }
 
diff --git a/pom.xml b/pom.xml
index c0bbe17..c2a97c9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -252,11 +252,6 @@
         <version>2.6</version>
       </dependency>
       <dependency>
-        <groupId>commons-lang</groupId>
-        <artifactId>commons-lang</artifactId>
-        <version>2.6</version>
-      </dependency>
-      <dependency>
         <groupId>commons-logging</groupId>
         <artifactId>commons-logging</artifactId>
         <version>1.2</version>
diff --git a/server/base/pom.xml b/server/base/pom.xml
index a8b1515..46baf7d 100644
--- a/server/base/pom.xml
+++ b/server/base/pom.xml
@@ -49,10 +49,6 @@
       <artifactId>commons-codec</artifactId>
     </dependency>
     <dependency>
-      <groupId>commons-lang</groupId>
-      <artifactId>commons-lang</artifactId>
-    </dependency>
-    <dependency>
       <groupId>jline</groupId>
       <artifactId>jline</artifactId>
     </dependency>
@@ -73,6 +69,10 @@
       <artifactId>commons-collections4</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.hadoop</groupId>
       <artifactId>hadoop-client-api</artifactId>
     </dependency>
diff --git a/server/base/src/main/java/org/apache/accumulo/server/fs/PreferredVolumeChooser.java b/server/base/src/main/java/org/apache/accumulo/server/fs/PreferredVolumeChooser.java
index 834e369..d290e9b 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/fs/PreferredVolumeChooser.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/fs/PreferredVolumeChooser.java
@@ -22,7 +22,6 @@ import java.util.stream.Collectors;
 
 import org.apache.accumulo.core.volume.Volume;
 import org.apache.accumulo.server.fs.VolumeChooserEnvironment.ChooserScope;
-import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -126,8 +125,8 @@ public class PreferredVolumeChooser extends RandomVolumeChooser {
   private String[] parsePreferred(String property, String preferredVolumes, String[] options) {
     log.trace("Found {} = {}", property, preferredVolumes);
 
-    Set<String> preferred = Arrays.stream(StringUtils.split(preferredVolumes, ','))
-        .map(String::trim).collect(Collectors.toSet());
+    Set<String> preferred =
+        Arrays.stream(preferredVolumes.split(",")).map(String::trim).collect(Collectors.toSet());
     if (preferred.isEmpty()) {
       String msg = "No volumes could be parsed from '" + property + "', which had a value of '"
           + preferredVolumes + "'";
diff --git a/server/base/src/main/java/org/apache/accumulo/server/fs/SpaceAwareVolumeChooser.java b/server/base/src/main/java/org/apache/accumulo/server/fs/SpaceAwareVolumeChooser.java
index 41251f2..797c461 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/fs/SpaceAwareVolumeChooser.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/fs/SpaceAwareVolumeChooser.java
@@ -25,7 +25,7 @@ import java.util.TreeMap;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.FsStatus;
 import org.slf4j.Logger;
diff --git a/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeManagerImpl.java b/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeManagerImpl.java
index 8063294..75f73f1 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeManagerImpl.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeManagerImpl.java
@@ -40,9 +40,7 @@ import org.apache.accumulo.core.volume.NonConfiguredVolume;
 import org.apache.accumulo.core.volume.Volume;
 import org.apache.accumulo.core.volume.VolumeConfiguration;
 import org.apache.accumulo.server.fs.VolumeChooser.VolumeChooserException;
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.NotImplementedException;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.ArrayUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.ContentSummary;
 import org.apache.hadoop.fs.CreateFlag;
@@ -317,7 +315,7 @@ public class VolumeManagerImpl implements VolumeManager {
     FileSystem source = srcVolume.getFileSystem();
     FileSystem dest = destVolume.getFileSystem();
     if (source != dest) {
-      throw new NotImplementedException(
+      throw new UnsupportedOperationException(
           "Cannot rename files across volumes: " + path + " -> " + newPath);
     }
     return source.rename(path, newPath);
@@ -455,7 +453,7 @@ public class VolumeManagerImpl implements VolumeManager {
     // in the relative path. Fail when this doesn't appear to happen.
     if (fileType == FileType.TABLE) {
       // Trailing slash doesn't create an additional element
-      String[] pathComponents = StringUtils.split(path, Path.SEPARATOR_CHAR);
+      String[] pathComponents = path.split(Path.SEPARATOR);
 
       // Is an rfile
       if (path.endsWith(RFILE_SUFFIX)) {
diff --git a/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java b/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java
index a1a4e60..0646cfa 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java
@@ -104,7 +104,7 @@ import org.apache.accumulo.server.util.ReplicationTableUtil;
 import org.apache.accumulo.server.util.SystemPropUtil;
 import org.apache.accumulo.server.util.TablePropUtil;
 import org.apache.accumulo.start.spi.KeywordExecutable;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.FileSystem;
diff --git a/server/base/src/main/java/org/apache/accumulo/server/master/balancer/GroupBalancer.java b/server/base/src/main/java/org/apache/accumulo/server/master/balancer/GroupBalancer.java
index 4dc910b..83a71a6 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/master/balancer/GroupBalancer.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/master/balancer/GroupBalancer.java
@@ -44,7 +44,7 @@ import org.apache.accumulo.core.util.MapCounter;
 import org.apache.accumulo.core.util.Pair;
 import org.apache.accumulo.server.master.state.TServerInstance;
 import org.apache.accumulo.server.master.state.TabletMigration;
-import org.apache.commons.lang.mutable.MutableInt;
+import org.apache.commons.lang3.mutable.MutableInt;
 
 import com.google.common.collect.HashBasedTable;
 import com.google.common.collect.HashMultimap;
diff --git a/server/base/src/main/java/org/apache/accumulo/server/master/balancer/HostRegexTableLoadBalancer.java b/server/base/src/main/java/org/apache/accumulo/server/master/balancer/HostRegexTableLoadBalancer.java
index f0f530a..8ef2048 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/master/balancer/HostRegexTableLoadBalancer.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/master/balancer/HostRegexTableLoadBalancer.java
@@ -47,8 +47,8 @@ import org.apache.accumulo.core.tabletserver.thrift.TabletStats;
 import org.apache.accumulo.server.ServerContext;
 import org.apache.accumulo.server.master.state.TServerInstance;
 import org.apache.accumulo.server.master.state.TabletMigration;
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.apache.commons.lang.builder.ToStringStyle;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
 import org.apache.thrift.TException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/server/base/src/main/java/org/apache/accumulo/server/master/state/ZooTabletStateStore.java b/server/base/src/main/java/org/apache/accumulo/server/master/state/ZooTabletStateStore.java
index e04c935..6b9b188 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/master/state/ZooTabletStateStore.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/master/state/ZooTabletStateStore.java
@@ -29,7 +29,6 @@ import org.apache.accumulo.core.metadata.schema.TabletMetadata;
 import org.apache.accumulo.core.metadata.schema.TabletMetadata.Location;
 import org.apache.accumulo.core.metadata.schema.TabletMetadata.LocationType;
 import org.apache.accumulo.core.tabletserver.log.LogEntry;
-import org.apache.commons.lang.NotImplementedException;
 import org.apache.hadoop.fs.Path;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -94,7 +93,7 @@ public class ZooTabletStateStore extends TabletStateStore {
 
       @Override
       public void remove() {
-        throw new NotImplementedException();
+        throw new UnsupportedOperationException();
       }
 
       @Override
diff --git a/server/base/src/main/java/org/apache/accumulo/server/metrics/Metrics.java b/server/base/src/main/java/org/apache/accumulo/server/metrics/Metrics.java
index 3ea8c05..eccaaf5 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/metrics/Metrics.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/metrics/Metrics.java
@@ -16,7 +16,6 @@
  */
 package org.apache.accumulo.server.metrics;
 
-import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.metrics2.MetricsCollector;
 import org.apache.hadoop.metrics2.MetricsRecordBuilder;
 import org.apache.hadoop.metrics2.MetricsSource;
@@ -37,7 +36,7 @@ public abstract class Metrics implements MetricsSource {
   public static MetricsSystem initSystem(String serviceName) {
     processName = serviceName;
     String serviceInstance = System.getProperty("accumulo.metrics.service.instance", "");
-    if (StringUtils.isNotBlank(serviceInstance)) {
+    if (!serviceInstance.isBlank()) {
       processName += serviceInstance;
     }
 
diff --git a/server/base/src/main/java/org/apache/accumulo/server/rpc/ThriftServerType.java b/server/base/src/main/java/org/apache/accumulo/server/rpc/ThriftServerType.java
index 29ecc53..9cf89cc 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/rpc/ThriftServerType.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/rpc/ThriftServerType.java
@@ -16,7 +16,7 @@
  */
 package org.apache.accumulo.server.rpc;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 /**
  * The type of configured Thrift server to start. This is meant more as a developer knob to ensure
diff --git a/server/base/src/main/java/org/apache/accumulo/server/security/UserImpersonation.java b/server/base/src/main/java/org/apache/accumulo/server/security/UserImpersonation.java
index 9912b7e..afca9c7 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/security/UserImpersonation.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/security/UserImpersonation.java
@@ -27,7 +27,6 @@ import java.util.Set;
 
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.commons.lang.StringUtils;
 
 /**
  * When SASL is enabled, this parses properties from the site configuration to build up a set of all
@@ -181,10 +180,10 @@ public class UserImpersonation {
 
     final String hostConfigString = conf.get(Property.INSTANCE_RPC_SASL_ALLOWED_HOST_IMPERSONATION);
     // Pull out the config values, defaulting to at least one value
-    final String[] userConfigs = userConfigString.trim().isEmpty() ? new String[] {""}
-        : StringUtils.split(userConfigString, ';');
-    final String[] hostConfigs = hostConfigString.trim().isEmpty() ? new String[] {""}
-        : StringUtils.split(hostConfigString, ';');
+    final String[] userConfigs =
+        userConfigString.trim().isEmpty() ? new String[] {""} : userConfigString.split(";");
+    final String[] hostConfigs =
+        hostConfigString.trim().isEmpty() ? new String[] {""} : hostConfigString.split(";");
 
     if (userConfigs.length != hostConfigs.length) {
       String msg = String.format("Should have equal number of user and host"
@@ -197,7 +196,7 @@ public class UserImpersonation {
       final String userConfig = userConfigs[i];
       final String hostConfig = hostConfigs[i];
 
-      final String[] splitUserConfig = StringUtils.split(userConfig, ':');
+      final String[] splitUserConfig = userConfig.split(":");
       if (splitUserConfig.length != 2) {
         throw new IllegalArgumentException(
             "Expect a single colon-separated pair, but found '" + userConfig + "'");
@@ -212,7 +211,7 @@ public class UserImpersonation {
       if (ALL.equals(allowedImpersonationsForRemoteUser)) {
         usersWithHosts.setAcceptAllUsers(true);
       } else {
-        String[] allowedUsers = StringUtils.split(allowedImpersonationsForRemoteUser, ",");
+        String[] allowedUsers = allowedImpersonationsForRemoteUser.split(",");
         Set<String> usersSet = new HashSet<>();
         usersSet.addAll(Arrays.asList(allowedUsers));
         usersWithHosts.setUsers(usersSet);
@@ -221,7 +220,7 @@ public class UserImpersonation {
       if (ALL.equals(hostConfig)) {
         usersWithHosts.setAcceptAllHosts(true);
       } else {
-        String[] allowedHosts = StringUtils.split(hostConfig, ",");
+        String[] allowedHosts = hostConfig.split(",");
         Set<String> hostsSet = new HashSet<>();
         hostsSet.addAll(Arrays.asList(allowedHosts));
         usersWithHosts.setHosts(hostsSet);
diff --git a/server/base/src/main/java/org/apache/accumulo/server/security/delegation/AuthenticationKey.java b/server/base/src/main/java/org/apache/accumulo/server/security/delegation/AuthenticationKey.java
index ebeeac3..d316f53 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/security/delegation/AuthenticationKey.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/security/delegation/AuthenticationKey.java
@@ -31,7 +31,7 @@ import javax.crypto.SecretKey;
 import org.apache.accumulo.core.securityImpl.thrift.TAuthenticationKey;
 import org.apache.accumulo.core.util.ByteBufferUtil;
 import org.apache.accumulo.core.util.ThriftMessageUtil;
-import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.hadoop.io.Writable;
 import org.apache.hadoop.io.WritableUtils;
 
diff --git a/server/base/src/main/java/org/apache/accumulo/server/tables/TableManager.java b/server/base/src/main/java/org/apache/accumulo/server/tables/TableManager.java
index 9a7dd55..1f96f9c 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/tables/TableManager.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/tables/TableManager.java
@@ -41,7 +41,6 @@ import org.apache.accumulo.fate.zookeeper.ZooUtil.NodeExistsPolicy;
 import org.apache.accumulo.fate.zookeeper.ZooUtil.NodeMissingPolicy;
 import org.apache.accumulo.server.ServerContext;
 import org.apache.accumulo.server.util.TablePropUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.zookeeper.KeeperException;
 import org.apache.zookeeper.WatchedEvent;
 import org.apache.zookeeper.Watcher;
@@ -128,7 +127,7 @@ public class TableManager {
       this.oldState = oldState;
       this.newState = newState;
 
-      if (StringUtils.isNotEmpty(message))
+      if (message != null && !message.isEmpty())
         this.message = message;
       else {
         this.message = "Error transitioning from " + oldState + " state to " + newState + " state";
diff --git a/server/base/src/test/java/org/apache/accumulo/server/client/BulkImporterTest.java b/server/base/src/test/java/org/apache/accumulo/server/client/BulkImporterTest.java
index f6d855c..ceb6bf6 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/client/BulkImporterTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/client/BulkImporterTest.java
@@ -42,7 +42,6 @@ import org.apache.accumulo.core.file.FileSKVWriter;
 import org.apache.accumulo.server.ServerContext;
 import org.apache.accumulo.server.fs.VolumeManager;
 import org.apache.accumulo.server.fs.VolumeManagerImpl;
-import org.apache.commons.lang.NotImplementedException;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
@@ -77,13 +76,13 @@ public class BulkImporterTest {
     @Override
     public <T extends Mutation> void binMutations(ClientContext context, List<T> mutations,
         Map<String,TabletServerMutations<T>> binnedMutations, List<T> failures) {
-      throw new NotImplementedException();
+      throw new UnsupportedOperationException();
     }
 
     @Override
     public List<Range> binRanges(ClientContext context, List<Range> ranges,
         Map<String,Map<KeyExtent,List<Range>>> binnedRanges) {
-      throw new NotImplementedException();
+      throw new UnsupportedOperationException();
     }
 
     @Override
@@ -93,17 +92,17 @@ public class BulkImporterTest {
 
     @Override
     public void invalidateCache(Collection<KeyExtent> keySet) {
-      throw new NotImplementedException();
+      throw new UnsupportedOperationException();
     }
 
     @Override
     public void invalidateCache() {
-      throw new NotImplementedException();
+      throw new UnsupportedOperationException();
     }
 
     @Override
     public void invalidateCache(ClientContext context, String server) {
-      throw new NotImplementedException();
+      throw new UnsupportedOperationException();
     }
   }
 
diff --git a/server/base/src/test/java/org/apache/accumulo/server/fs/VolumeManagerImplTest.java b/server/base/src/test/java/org/apache/accumulo/server/fs/VolumeManagerImplTest.java
index 5a3849a..ab8d22f 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/fs/VolumeManagerImplTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/fs/VolumeManagerImplTest.java
@@ -26,7 +26,6 @@ import org.apache.accumulo.core.conf.ConfigurationCopy;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.TableId;
 import org.apache.accumulo.server.fs.VolumeManager.FileType;
-import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.Path;
 import org.junit.Before;
@@ -76,7 +75,7 @@ public class VolumeManagerImplTest {
     List<String> volumes = Arrays.asList("file://one/", "file://two/", "file://three/");
     ConfigurationCopy conf = new ConfigurationCopy();
     conf.set(INSTANCE_DFS_URI, volumes.get(0));
-    conf.set(Property.INSTANCE_VOLUMES, StringUtils.join(volumes, ","));
+    conf.set(Property.INSTANCE_VOLUMES, String.join(",", volumes));
     conf.set(Property.GENERAL_VOLUME_CHOOSER,
         "org.apache.accumulo.server.fs.ChooserThatDoesntExist");
     thrown.expect(RuntimeException.class);
@@ -133,7 +132,7 @@ public class VolumeManagerImplTest {
     List<String> volumes = Arrays.asList("file://one/", "file://two/", "file://three/");
     ConfigurationCopy conf = new ConfigurationCopy();
     conf.set(INSTANCE_DFS_URI, volumes.get(0));
-    conf.set(Property.INSTANCE_VOLUMES, StringUtils.join(volumes, ","));
+    conf.set(Property.INSTANCE_VOLUMES, String.join(",", volumes));
     conf.set(Property.GENERAL_VOLUME_CHOOSER, WrongVolumeChooser.class.getName());
     thrown.expect(RuntimeException.class);
     VolumeManager vm = VolumeManagerImpl.get(conf, hadoopConf);
diff --git a/server/monitor/pom.xml b/server/monitor/pom.xml
index a8f574f..3159235 100644
--- a/server/monitor/pom.xml
+++ b/server/monitor/pom.xml
@@ -37,10 +37,6 @@
       <optional>true</optional>
     </dependency>
     <dependency>
-      <groupId>commons-lang</groupId>
-      <artifactId>commons-lang</artifactId>
-    </dependency>
-    <dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>javax.servlet-api</artifactId>
     </dependency>
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/EmbeddedWebServer.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/EmbeddedWebServer.java
index 520dd50..6eafdff 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/EmbeddedWebServer.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/EmbeddedWebServer.java
@@ -20,7 +20,6 @@ import java.util.EnumSet;
 
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.commons.lang.StringUtils;
 import org.eclipse.jetty.server.AbstractConnectionFactory;
 import org.eclipse.jetty.server.HttpConnectionFactory;
 import org.eclipse.jetty.server.Server;
@@ -80,17 +79,17 @@ public class EmbeddedWebServer {
 
       final String includedCiphers = conf.get(Property.MONITOR_SSL_INCLUDE_CIPHERS);
       if (!Property.MONITOR_SSL_INCLUDE_CIPHERS.getDefaultValue().equals(includedCiphers)) {
-        sslContextFactory.setIncludeCipherSuites(StringUtils.split(includedCiphers, ','));
+        sslContextFactory.setIncludeCipherSuites(includedCiphers.split(","));
       }
 
       final String excludedCiphers = conf.get(Property.MONITOR_SSL_EXCLUDE_CIPHERS);
       if (!Property.MONITOR_SSL_EXCLUDE_CIPHERS.getDefaultValue().equals(excludedCiphers)) {
-        sslContextFactory.setExcludeCipherSuites(StringUtils.split(excludedCiphers, ','));
+        sslContextFactory.setExcludeCipherSuites(excludedCiphers.split(","));
       }
 
       final String includeProtocols = conf.get(Property.MONITOR_SSL_INCLUDE_PROTOCOLS);
       if (includeProtocols != null && !includeProtocols.isEmpty()) {
-        sslContextFactory.setIncludeProtocols(StringUtils.split(includeProtocols, ','));
+        sslContextFactory.setIncludeProtocols(includeProtocols.split(","));
       }
 
       SslConnectionFactory sslFactory =
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/logs/LogResource.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/logs/LogResource.java
index ba0b301..8e0a31d 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/logs/LogResource.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/logs/LogResource.java
@@ -27,7 +27,6 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.accumulo.server.monitor.DedupedLogEvent;
 import org.apache.accumulo.server.monitor.LogService;
-import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.spi.LoggingEvent;
 
 /**
@@ -56,7 +55,9 @@ public class LogResource {
         application = "";
       String msg = ev.getMessage().toString();
       // truncate if full hadoop errors get logged as a message
-      msg = StringUtils.abbreviate(sanitize(msg), 300);
+      msg = sanitize(msg);
+      if (msg.length() > 300)
+        msg = msg.substring(0, 300);
 
       String[] stacktrace = ev.getThrowableStrRep();
       if (stacktrace != null)
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemsResource.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemsResource.java
index 6c8eaca..60be57b 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemsResource.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemsResource.java
@@ -42,7 +42,6 @@ import org.apache.accumulo.monitor.Monitor;
 import org.apache.accumulo.server.problems.ProblemReport;
 import org.apache.accumulo.server.problems.ProblemReports;
 import org.apache.accumulo.server.problems.ProblemType;
-import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -109,7 +108,7 @@ public class ProblemsResource {
       ProblemReports.getInstance(monitor.getContext()).deleteProblemReports(TableId.of(tableID));
     } catch (Exception e) {
       log.error("Failed to delete problem reports for table "
-          + (StringUtils.isEmpty(tableID) ? StringUtils.EMPTY : sanitize(tableID)), e);
+          + (tableID.isEmpty() ? "" : sanitize(tableID)), e);
     }
   }
 
@@ -169,7 +168,7 @@ public class ProblemsResource {
           ProblemType.valueOf(ptype), resource);
     } catch (Exception e) {
       log.error("Failed to delete problem reports for table "
-          + (StringUtils.isBlank(tableID) ? "" : sanitize(tableID)), e);
+          + (tableID.isBlank() ? "" : sanitize(tableID)), e);
     }
   }
 
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tables/TablesResource.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tables/TablesResource.java
index 949ea32..d9f2e05 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tables/TablesResource.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tables/TablesResource.java
@@ -51,7 +51,6 @@ import org.apache.accumulo.server.master.state.MetaDataTableScanner;
 import org.apache.accumulo.server.master.state.TabletLocationState;
 import org.apache.accumulo.server.tables.TableManager;
 import org.apache.accumulo.server.util.TableInfoUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.io.Text;
 
 /**
@@ -138,7 +137,7 @@ public class TablesResource {
 
     TabletServers tabletServers = new TabletServers(mmi.tServerInfo.size());
 
-    if (StringUtils.isBlank(tableIdStr)) {
+    if (tableIdStr.isBlank()) {
       return tabletServers;
     }
 
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/trace/TracesResource.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/trace/TracesResource.java
index a8d32f2..d147d9f 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/trace/TracesResource.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/trace/TracesResource.java
@@ -64,7 +64,6 @@ import org.apache.accumulo.tracer.TraceDump;
 import org.apache.accumulo.tracer.TraceFormatter;
 import org.apache.accumulo.tracer.thrift.Annotation;
 import org.apache.accumulo.tracer.thrift.RemoteSpan;
-import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.io.Text;
 import org.apache.hadoop.security.UserGroupInformation;
 
@@ -280,10 +279,6 @@ public class TracesResource {
     long startTime = endTime - millisSince;
 
     String startHexTime = Long.toHexString(startTime), endHexTime = Long.toHexString(endTime);
-    if (startHexTime.length() < endHexTime.length()) {
-      StringUtils.leftPad(startHexTime, endHexTime.length(), '0');
-    }
-
     return new Range(new Text("start:" + startHexTime), new Text("start:" + endHexTime));
   }
 
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/view/WebViews.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/view/WebViews.java
index fb8204c..9e786b7 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/view/WebViews.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/view/WebViews.java
@@ -21,8 +21,6 @@ import static org.apache.accumulo.monitor.util.ParameterValidator.ALPHA_NUM_REGE
 import static org.apache.accumulo.monitor.util.ParameterValidator.ALPHA_NUM_REGEX_TABLE_ID;
 import static org.apache.accumulo.monitor.util.ParameterValidator.HOSTNAME_PORT_REGEX;
 import static org.apache.accumulo.monitor.util.ParameterValidator.RESOURCE_REGEX;
-import static org.apache.commons.lang.StringUtils.isEmpty;
-import static org.apache.commons.lang.StringUtils.isNotBlank;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -80,7 +78,7 @@ public class WebViews {
   private void addExternalResources(Map<String,Object> model) {
     AccumuloConfiguration conf = monitor.getContext().getConfiguration();
     String resourcesProperty = conf.get(Property.MONITOR_RESOURCES_EXTERNAL);
-    if (isEmpty(resourcesProperty)) {
+    if (resourcesProperty.isBlank()) {
       return;
     }
     List<String> monitorResources = new ArrayList<>();
@@ -161,7 +159,7 @@ public class WebViews {
 
     Map<String,Object> model = getModel();
     model.put("title", "Tablet Server Status");
-    if (isNotBlank(server)) {
+    if (server != null && !server.isBlank()) {
       model.put("template", "server.ftl");
       model.put("js", "server.js");
       model.put("server", server);
@@ -379,7 +377,7 @@ public class WebViews {
     model.put("template", "problems.ftl");
     model.put("js", "problems.js");
 
-    if (isNotBlank(table)) {
+    if (table != null && !table.isBlank()) {
       model.put("table", table);
     }
 
diff --git a/server/tracer/pom.xml b/server/tracer/pom.xml
index 9b5bd70..d1ad5d3 100644
--- a/server/tracer/pom.xml
+++ b/server/tracer/pom.xml
@@ -41,10 +41,6 @@
       <artifactId>guava</artifactId>
     </dependency>
     <dependency>
-      <groupId>commons-lang</groupId>
-      <artifactId>commons-lang</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.accumulo</groupId>
       <artifactId>accumulo-core</artifactId>
     </dependency>
diff --git a/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceFormatter.java b/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceFormatter.java
index d43ea10..5a86852 100644
--- a/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceFormatter.java
+++ b/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceFormatter.java
@@ -30,7 +30,6 @@ import org.apache.accumulo.core.util.format.Formatter;
 import org.apache.accumulo.core.util.format.FormatterConfig;
 import org.apache.accumulo.tracer.thrift.Annotation;
 import org.apache.accumulo.tracer.thrift.RemoteSpan;
-import org.apache.commons.lang.NotImplementedException;
 import org.apache.hadoop.io.Text;
 import org.apache.thrift.TException;
 import org.apache.thrift.protocol.TCompactProtocol;
@@ -111,7 +110,7 @@ public class TraceFormatter implements Formatter {
 
   @Override
   public void remove() {
-    throw new NotImplementedException();
+    throw new UnsupportedOperationException();
   }
 
   @Override
diff --git a/server/tserver/pom.xml b/server/tserver/pom.xml
index 8fb5e69..328659f 100644
--- a/server/tserver/pom.xml
+++ b/server/tserver/pom.xml
@@ -53,10 +53,6 @@
       <artifactId>commons-io</artifactId>
     </dependency>
     <dependency>
-      <groupId>commons-lang</groupId>
-      <artifactId>commons-lang</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.accumulo</groupId>
       <artifactId>accumulo-core</artifactId>
     </dependency>
@@ -73,6 +69,10 @@
       <artifactId>commons-collections4</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.hadoop</groupId>
       <artifactId>hadoop-client-api</artifactId>
     </dependency>
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/InMemoryMap.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/InMemoryMap.java
index 931fe09..6cca536 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/InMemoryMap.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/InMemoryMap.java
@@ -68,7 +68,7 @@ import org.apache.accumulo.core.util.LocalityGroupUtil.Partitioner;
 import org.apache.accumulo.core.util.Pair;
 import org.apache.accumulo.core.util.PreAllocatedArray;
 import org.apache.accumulo.server.ServerContext;
-import org.apache.commons.lang.mutable.MutableLong;
+import org.apache.commons.lang3.mutable.MutableLong;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystem.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystem.java
index 839700f..2e95291 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystem.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystem.java
@@ -71,7 +71,6 @@ import org.apache.accumulo.tserver.log.DfsLogger.DFSLoggerInputStreams;
 import org.apache.accumulo.tserver.log.DfsLogger.LogHeaderIncompleteException;
 import org.apache.accumulo.tserver.logger.LogFileKey;
 import org.apache.accumulo.tserver.logger.LogFileValue;
-import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.fs.FSDataInputStream;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.security.UserGroupInformation;
@@ -720,7 +719,7 @@ public class AccumuloReplicaSystem implements ReplicaSystem {
 
     // Add our name, and send it
     final String name = conf.get(Property.REPLICATION_NAME);
-    if (StringUtils.isBlank(name)) {
+    if (name.isBlank()) {
       throw new IllegalArgumentException("Local system has no replication name configured");
     }
 
diff --git a/shell/pom.xml b/shell/pom.xml
index 9f269f9..457f33c 100644
--- a/shell/pom.xml
+++ b/shell/pom.xml
@@ -52,10 +52,6 @@
       <artifactId>commons-io</artifactId>
     </dependency>
     <dependency>
-      <groupId>commons-lang</groupId>
-      <artifactId>commons-lang</artifactId>
-    </dependency>
-    <dependency>
       <groupId>jline</groupId>
       <artifactId>jline</artifactId>
     </dependency>
diff --git a/shell/src/main/java/org/apache/accumulo/shell/commands/GetAuthsCommand.java b/shell/src/main/java/org/apache/accumulo/shell/commands/GetAuthsCommand.java
index c3c4745..6755006 100644
--- a/shell/src/main/java/org/apache/accumulo/shell/commands/GetAuthsCommand.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/commands/GetAuthsCommand.java
@@ -30,7 +30,6 @@ import org.apache.accumulo.shell.ShellOptions;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.Option;
 import org.apache.commons.cli.Options;
-import org.apache.commons.lang.StringUtils;
 
 public class GetAuthsCommand extends Command {
   private Option userOpt;
@@ -44,7 +43,7 @@ public class GetAuthsCommand extends Command {
     Authorizations auths =
         shellState.getAccumuloClient().securityOperations().getUserAuthorizations(user);
     List<String> set = sortAuthorizations(auths);
-    shellState.getReader().println(StringUtils.join(set, ','));
+    shellState.getReader().println(String.join(",", set));
     return 0;
   }
 
diff --git a/shell/src/main/java/org/apache/accumulo/shell/commands/SetIterCommand.java b/shell/src/main/java/org/apache/accumulo/shell/commands/SetIterCommand.java
index 026c544..ba3f1a1 100644
--- a/shell/src/main/java/org/apache/accumulo/shell/commands/SetIterCommand.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/commands/SetIterCommand.java
@@ -45,7 +45,6 @@ import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.Option;
 import org.apache.commons.cli.OptionGroup;
 import org.apache.commons.cli.Options;
-import org.apache.commons.lang.StringUtils;
 
 import jline.console.ConsoleReader;
 
@@ -85,15 +84,14 @@ public class SetIterCommand extends Command {
     // we are setting a shell iterator). If so, temporarily set the table state to an
     // existing table such as accumulo.metadata. This allows the command to complete successfully.
     // After completion reassign the table to its original value and continue.
-    String currentTableName = null;
+    String currentTableName = shellState.getTableName();
     String tmpTable = null;
     String configuredName;
     try {
-      if (profileOpt != null && StringUtils.isBlank(shellState.getTableName())) {
-        currentTableName = shellState.getTableName();
+      if (profileOpt != null && (currentTableName == null || currentTableName.isBlank())) {
         tmpTable = "accumulo.metadata";
         shellState.setTableName(tmpTable);
-        tables = cl.hasOption(OptUtil.tableOpt().getOpt()) || !shellState.getTableName().isEmpty();
+        tables = cl.hasOption(OptUtil.tableOpt().getOpt()) || !currentTableName.isEmpty();
       }
       ClassLoader classloader = shellState.getClassLoader(cl, shellState);
       // Get the iterator options, with potentially a name provided by the OptionDescriber impl or
@@ -307,7 +305,7 @@ public class SetIterCommand extends Command {
       if (iteratorName == null) {
         reader.println();
         throw new IOException("Input stream closed");
-      } else if (StringUtils.isWhitespace(iteratorName)) {
+      } else if (iteratorName.isBlank()) {
         // Treat whitespace or empty string as no name provided
         iteratorName = null;
       }
@@ -323,7 +321,7 @@ public class SetIterCommand extends Command {
         if (input == null) {
           reader.println();
           throw new IOException("Input stream closed");
-        } else if (StringUtils.isWhitespace(input)) {
+        } else if (input.isBlank()) {
           break;
         }
 
diff --git a/shell/src/test/java/org/apache/accumulo/shell/commands/SetIterCommandTest.java b/shell/src/test/java/org/apache/accumulo/shell/commands/SetIterCommandTest.java
index f120af2..f3debec 100644
--- a/shell/src/test/java/org/apache/accumulo/shell/commands/SetIterCommandTest.java
+++ b/shell/src/test/java/org/apache/accumulo/shell/commands/SetIterCommandTest.java
@@ -117,6 +117,8 @@ public class SetIterCommandTest {
         EasyMock.eq(EnumSet.allOf(IteratorScope.class)));
     EasyMock.expectLastCall().once();
 
+    EasyMock.expect(shellState.getTableName()).andReturn("foo").anyTimes();
+
     EasyMock.replay(client, cli, shellState, reader, tableOperations);
 
     cmd.execute(
diff --git a/test/pom.xml b/test/pom.xml
index d9d07ce..63fec28 100644
--- a/test/pom.xml
+++ b/test/pom.xml
@@ -59,10 +59,6 @@
       <artifactId>commons-io</artifactId>
     </dependency>
     <dependency>
-      <groupId>commons-lang</groupId>
-      <artifactId>commons-lang</artifactId>
-    </dependency>
-    <dependency>
       <groupId>jline</groupId>
       <artifactId>jline</artifactId>
     </dependency>
@@ -128,6 +124,10 @@
       <artifactId>commons-lang3</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.hadoop</groupId>
       <artifactId>hadoop-client-api</artifactId>
     </dependency>
diff --git a/test/src/main/java/org/apache/accumulo/test/ShellServerIT.java b/test/src/main/java/org/apache/accumulo/test/ShellServerIT.java
index d730049..a7ef5af 100644
--- a/test/src/main/java/org/apache/accumulo/test/ShellServerIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/ShellServerIT.java
@@ -17,6 +17,7 @@
 package org.apache.accumulo.test;
 
 import static java.nio.file.Files.newBufferedReader;
+import static java.util.Objects.requireNonNull;
 import static org.apache.accumulo.fate.util.UtilWaitThread.sleepUninterruptibly;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -94,7 +95,6 @@ import org.apache.accumulo.test.categories.SunnyDayTests;
 import org.apache.accumulo.test.functional.SlowIterator;
 import org.apache.accumulo.tracer.TraceServer;
 import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
@@ -1996,7 +1996,7 @@ public class ShellServerIT extends SharedMiniClusterBase {
 
     log.debug("countFiles(): {}", ts.output.get());
 
-    String[] lines = StringUtils.split(ts.output.get(), "\n");
+    String[] lines = ts.output.get().split("\n");
     ts.output.clear();
 
     if (lines.length == 0) {
@@ -2775,13 +2775,13 @@ public class ShellServerIT extends SharedMiniClusterBase {
   }
 
   private static String encode(final Text text, final boolean encode) {
-    if (StringUtils.isBlank(text.toString()))
+    if (text.toString().isBlank())
       return null;
     return encode ? Base64.getEncoder().encodeToString(TextUtil.getBytes(text)) : text.toString();
   }
 
   private Text decode(final String text, final boolean decode) {
-    if (StringUtils.isBlank(text))
+    if (requireNonNull(text).isBlank())
       return null;
     return decode ? new Text(Base64.getDecoder().decode(text)) : new Text(text);
   }
diff --git a/test/src/main/java/org/apache/accumulo/test/YieldScannersIT.java b/test/src/main/java/org/apache/accumulo/test/YieldScannersIT.java
index 65b4a9a..354556d 100644
--- a/test/src/main/java/org/apache/accumulo/test/YieldScannersIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/YieldScannersIT.java
@@ -37,7 +37,6 @@ import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.harness.AccumuloClusterHarness;
 import org.apache.accumulo.miniclusterImpl.MiniAccumuloConfigImpl;
 import org.apache.accumulo.test.functional.YieldingIterator;
-import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.io.Text;
 import org.junit.Test;
@@ -101,7 +100,7 @@ public class YieldScannersIT extends AccumuloClusterHarness {
             yieldNextCount++;
             yieldSeekCount++;
           }
-          String[] value = StringUtils.split(next.getValue().toString(), ',');
+          String[] value = next.getValue().toString().split(",");
           assertEquals("Unexpected yield next count", Integer.toString(yieldNextCount), value[0]);
           assertEquals("Unexpected yield seek count", Integer.toString(yieldSeekCount), value[1]);
           assertEquals("Unexpected rebuild count",
@@ -157,7 +156,7 @@ public class YieldScannersIT extends AccumuloClusterHarness {
             yieldNextCount++;
             yieldSeekCount++;
           }
-          String[] value = StringUtils.split(next.getValue().toString(), ',');
+          String[] value = next.getValue().toString().split(",");
           assertEquals("Unexpected yield next count", Integer.toString(yieldNextCount), value[0]);
           assertEquals("Unexpected yield seek count", Integer.toString(yieldSeekCount), value[1]);
           assertEquals("Unexpected rebuild count",
diff --git a/test/src/main/java/org/apache/accumulo/test/functional/BalanceInPresenceOfOfflineTableIT.java b/test/src/main/java/org/apache/accumulo/test/functional/BalanceInPresenceOfOfflineTableIT.java
index aae5559..9230a9a 100644
--- a/test/src/main/java/org/apache/accumulo/test/functional/BalanceInPresenceOfOfflineTableIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/functional/BalanceInPresenceOfOfflineTableIT.java
@@ -46,7 +46,7 @@ import org.apache.accumulo.miniclusterImpl.MiniAccumuloConfigImpl;
 import org.apache.accumulo.test.TestIngest;
 import org.apache.accumulo.test.VerifyIngest;
 import org.apache.accumulo.test.VerifyIngest.VerifyParams;
-import org.apache.commons.lang.math.NumberUtils;
+import org.apache.commons.lang3.math.NumberUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.io.Text;
 import org.apache.thrift.TException;
diff --git a/test/src/main/java/org/apache/accumulo/test/mrit/IntegrationTestMapReduce.java b/test/src/main/java/org/apache/accumulo/test/mrit/IntegrationTestMapReduce.java
index bdd02cb..c666c92 100644
--- a/test/src/main/java/org/apache/accumulo/test/mrit/IntegrationTestMapReduce.java
+++ b/test/src/main/java/org/apache/accumulo/test/mrit/IntegrationTestMapReduce.java
@@ -20,7 +20,6 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.conf.Configured;
 import org.apache.hadoop.fs.Path;
@@ -146,7 +145,7 @@ public class IntegrationTestMapReduce extends Configured implements Tool {
         } else {
           log.info("{} failed", className);
           context.getCounter(TestCounts.FAIL).increment(1);
-          context.write(FAIL, new Text(className + "(" + StringUtils.join(failures, ", ") + ")"));
+          context.write(FAIL, new Text(className + "(" + String.join(", ", failures) + ")"));
         }
       } catch (Exception e) {
         // most likely JUnit issues, like no tests to run
diff --git a/test/src/main/java/org/apache/accumulo/test/replication/MockReplicaSystem.java b/test/src/main/java/org/apache/accumulo/test/replication/MockReplicaSystem.java
index 2d0cb75..b2192ad 100644
--- a/test/src/main/java/org/apache/accumulo/test/replication/MockReplicaSystem.java
+++ b/test/src/main/java/org/apache/accumulo/test/replication/MockReplicaSystem.java
@@ -24,7 +24,6 @@ import org.apache.accumulo.server.ServerContext;
 import org.apache.accumulo.server.replication.ReplicaSystem;
 import org.apache.accumulo.server.replication.ReplicaSystemHelper;
 import org.apache.accumulo.server.replication.proto.Replication.Status;
-import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.fs.Path;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -86,7 +85,7 @@ public class MockReplicaSystem implements ReplicaSystem {
 
   @Override
   public void configure(ServerContext context, String configuration) {
-    if (StringUtils.isBlank(configuration)) {
+    if (configuration.isBlank()) {
       log.debug("No configuration, using default sleep of {}", sleep);
       return;
     }