From d665d11f9937383d1d703cad38671c912252f338 Mon Sep 17 00:00:00 2001 From: Haohui Mai Date: Thu, 9 Apr 2015 10:58:12 -0700 Subject: [PATCH] HADOOP-11815. HttpServer2 should destroy SignerSecretProvider when it stops. Contributed by Rohith. --- hadoop-common-project/hadoop-common/CHANGES.txt | 5 ++++- .../src/main/java/org/apache/hadoop/http/HttpServer2.java | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index a4605ac9db4..616febcf625 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -729,7 +729,10 @@ Release 2.7.0 - UNRELEASED HADOOP-11796. Skip TestShellBasedIdMapping.testStaticMapUpdate on Windows. (Xiaoyu Yao via cnauroth) - + + HADOOP-11815. HttpServer2 should destroy SignerSecretProvider when it + stops. (Rohith via wheat9) + Release 2.6.1 - UNRELEASED INCOMPATIBLE CHANGES diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer2.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer2.java index 39d14d803c3..11ab23bc9cd 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer2.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer2.java @@ -140,6 +140,7 @@ public final class HttpServer2 implements FilterContainer { protected final List filterNames = new ArrayList<>(); static final String STATE_DESCRIPTION_ALIVE = " - alive"; static final String STATE_DESCRIPTION_NOT_LIVE = " - not live"; + private final SignerSecretProvider secretProvider; /** * Class to construct instances of HTTP server with specific options. @@ -335,7 +336,7 @@ public final class HttpServer2 implements FilterContainer { this.adminsAcl = b.adminsAcl; this.webAppContext = createWebAppContext(b.name, b.conf, adminsAcl, appDir); try { - SignerSecretProvider secretProvider = + this.secretProvider = constructSecretProvider(b, webAppContext.getServletContext()); this.webAppContext.getServletContext().setAttribute (AuthenticationFilter.SIGNER_SECRET_PROVIDER_ATTRIBUTE, @@ -945,6 +946,8 @@ public final class HttpServer2 implements FilterContainer { } try { + // explicitly destroy the secrete provider + secretProvider.destroy(); // clear & stop webAppContext attributes to avoid memory leaks. webAppContext.clearAttributes(); webAppContext.stop();