From 98238a8d4a3aacb7bf5e9d97660f3c2fbf030eaa Mon Sep 17 00:00:00 2001 From: Jason Darrell Lowe Date: Tue, 17 Jun 2014 02:12:03 +0000 Subject: [PATCH] YARN-2167. LeveldbIterator should get closed in NMLeveldbStateStoreService#loadLocalizationState() within finally block. Contributed by Junping Du git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1603039 13f79535-47bb-0310-9956-ffa450edef68 --- hadoop-yarn-project/CHANGES.txt | 4 ++++ .../nodemanager/recovery/NMLeveldbStateStoreService.java | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index ab5ae5ac9c..7792935787 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -255,6 +255,10 @@ Release 2.5.0 - UNRELEASED to NMs where the completed applications previously ran in case of RM restart. (Wangda Tan via jianhe) + YARN-2167. LeveldbIterator should get closed in + NMLeveldbStateStoreService#loadLocalizationState() within finally block + (Junping Du via jlowe) + Release 2.4.1 - 2014-06-23 INCOMPATIBLE CHANGES diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/recovery/NMLeveldbStateStoreService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/recovery/NMLeveldbStateStoreService.java index 02a55694d5..dc9aa886ad 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/recovery/NMLeveldbStateStoreService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/recovery/NMLeveldbStateStoreService.java @@ -95,8 +95,9 @@ public class NMLeveldbStateStoreService extends NMStateStoreService { throws IOException { RecoveredLocalizationState state = new RecoveredLocalizationState(); + LeveldbIterator iter = null; try { - LeveldbIterator iter = new LeveldbIterator(db); + iter = new LeveldbIterator(db); iter.seek(bytes(LOCALIZATION_PUBLIC_KEY_PREFIX)); state.publicTrackerState = loadResourceTrackerState(iter, LOCALIZATION_PUBLIC_KEY_PREFIX); @@ -122,6 +123,10 @@ public class NMLeveldbStateStoreService extends NMStateStoreService { } } catch (DBException e) { throw new IOException(e.getMessage(), e); + } finally { + if (iter != null) { + iter.close(); + } } return state;