diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/KeyProvider.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/KeyProvider.java index 4d1674bd7b883..49742f375f390 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/KeyProvider.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/KeyProvider.java @@ -639,13 +639,16 @@ public void invalidateCache(String name) throws IOException { public abstract void flush() throws IOException; /** - * Split the versionName in to a base name. Converts "/aaa/bbb/3" to + * Split the versionName in to a base name. Converts "/aaa/bbb@3" to * "/aaa/bbb". * @param versionName the version name to split * @return the base name of the key * @throws IOException raised on errors performing I/O. */ public static String getBaseName(String versionName) throws IOException { + if (!Objects.nonNull(versionName)) { + throw new NullPointerException("key path variable versionName found null"); + } int div = versionName.lastIndexOf('@'); if (div == -1) { throw new IOException("No version in key path " + versionName); diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/crypto/key/TestKeyProvider.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/crypto/key/TestKeyProvider.java index cb6a1fb31e6c1..b0c3b0900221b 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/crypto/key/TestKeyProvider.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/crypto/key/TestKeyProvider.java @@ -36,6 +36,7 @@ import java.util.List; import java.util.Map; +import static org.apache.hadoop.test.LambdaTestUtils.intercept; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; @@ -62,6 +63,8 @@ public void testParseVersionName() throws Exception { } catch (IOException e) { assertTrue(true); } + intercept(NullPointerException.class, () -> + KeyProvider.getBaseName(null)); } @Test