diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.java index 9b60ff6c035..680a3671839 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.java @@ -427,8 +427,9 @@ public static KeyProviderCryptoExtension createKeyProviderCryptoExtension( @Override public void close() throws IOException { - if (getKeyProvider() != null) { - getKeyProvider().close(); + KeyProvider provider = getKeyProvider(); + if (provider != null && provider != this) { + provider.close(); } } diff --git a/hadoop-common-project/hadoop-kms/src/main/java/org/apache/hadoop/crypto/key/kms/server/KMSWebApp.java b/hadoop-common-project/hadoop-kms/src/main/java/org/apache/hadoop/crypto/key/kms/server/KMSWebApp.java index 763f2076067..5772036a388 100644 --- a/hadoop-common-project/hadoop-kms/src/main/java/org/apache/hadoop/crypto/key/kms/server/KMSWebApp.java +++ b/hadoop-common-project/hadoop-kms/src/main/java/org/apache/hadoop/crypto/key/kms/server/KMSWebApp.java @@ -40,9 +40,9 @@ import javax.servlet.ServletContextListener; import java.io.File; +import java.io.IOException; import java.net.URI; import java.net.URL; -import java.util.List; @InterfaceAudience.Private public class KMSWebApp implements ServletContextListener { @@ -215,6 +215,11 @@ public void contextInitialized(ServletContextEvent sce) { @Override public void contextDestroyed(ServletContextEvent sce) { + try { + keyProviderCryptoExtension.close(); + } catch (IOException ioe) { + LOG.error("Error closing KeyProviderCryptoExtension", ioe); + } kmsAudit.shutdown(); kmsAcls.stopReloader(); jmxReporter.stop();