From 5f47bf5933b20fd09cfbfcdfbc991c528a4e2662 Mon Sep 17 00:00:00 2001 From: Prabhu Joseph Date: Thu, 12 Mar 2020 23:18:45 +0530 Subject: [PATCH] YARN-10194. Fix ZK Connection Leak by YARN Validate REST API and ZKConfigurationStore. Signed-off-by: Prabhu Joseph --- .../capacity/CapacitySchedulerConfigValidator.java | 18 +++++++++++------- .../capacity/conf/FSSchedulerConfigurationStore.java | 1 + .../capacity/conf/InMemoryConfigurationStore.java | 6 ++++++ .../capacity/conf/YarnConfigurationStore.java | 2 +- .../scheduler/capacity/conf/ZKConfigurationStore.java | 8 ++++++++ 5 files changed, 27 insertions(+), 8 deletions(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacitySchedulerConfigValidator.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacitySchedulerConfigValidator.java index 3957c5f..d8e1285 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacitySchedulerConfigValidator.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacitySchedulerConfigValidator.java @@ -43,14 +43,18 @@ private CapacitySchedulerConfigValidator() { public static boolean validateCSConfiguration( final Configuration oldConf, final Configuration newConf, final RMContext rmContext) throws IOException { - //TODO: extract all the validation steps and replace reinitialize with - //the specific validation steps CapacityScheduler newCs = new CapacityScheduler(); - newCs.setConf(oldConf); - newCs.setRMContext(rmContext); - newCs.init(oldConf); - newCs.reinitialize(newConf, rmContext, true); - return true; + try { + //TODO: extract all the validation steps and replace reinitialize with + //the specific validation steps + newCs.setConf(oldConf); + newCs.setRMContext(rmContext); + newCs.init(oldConf); + newCs.reinitialize(newConf, rmContext, true); + return true; + } finally { + newCs.stop(); + } } public static Set validatePlacementRules( diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/conf/YarnConfigurationStore.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/conf/YarnConfigurationStore.java index 8ab3e44..4480bc3 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/conf/YarnConfigurationStore.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/conf/YarnConfigurationStore.java @@ -99,7 +99,7 @@ public abstract void initialize(Configuration conf, Configuration schedConf, * Closes the configuration store, releasing any required resources. * @throws IOException on failure to close */ - public void close() throws IOException {} + public abstract void close() throws IOException; /** * Logs the configuration change to backing store. -- 2.7.4 (Apple Git-66)