From cabab9d3ef0db0acc16e6e216f370a8e7404b594 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 | 20 ++++++++++++-------- .../capacity/conf/YarnConfigurationStore.java | 2 +- 2 files changed, 13 insertions(+), 9 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 676c6d1..3b6390d 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 @@ -42,14 +42,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 + CapacityScheduler newCs = new CapacityScheduler(); + 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)