YARN-8558. NM recovery level db not cleaned up properly on container finish. Contributed by Bibin A Chundatt.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/3d586841 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/3d586841 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/3d586841 Branch: refs/heads/YARN-7402 Commit: 3d586841aba99c7df98b2b4d3e48ec0144bad086 Parents: 59adeb8 Author: bibinchundatt <bibinchund...@apache.org> Authored: Sat Jul 28 20:52:39 2018 +0530 Committer: bibinchundatt <bibinchund...@apache.org> Committed: Sat Jul 28 20:52:39 2018 +0530 ---------------------------------------------------------------------- .../recovery/NMLeveldbStateStoreService.java | 14 ++++++++++---- .../recovery/TestNMLeveldbStateStoreService.java | 7 +++++++ 2 files changed, 17 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/3d586841/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/recovery/NMLeveldbStateStoreService.java ---------------------------------------------------------------------- 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 44f5e18..67f642d 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 @@ -143,9 +143,9 @@ public class NMLeveldbStateStoreService extends NMStateStoreService { NM_TOKENS_KEY_PREFIX + PREV_MASTER_KEY_SUFFIX; private static final String CONTAINER_TOKENS_KEY_PREFIX = "ContainerTokens/"; - private static final String CONTAINER_TOKENS_CURRENT_MASTER_KEY = + private static final String CONTAINER_TOKEN_SECRETMANAGER_CURRENT_MASTER_KEY = CONTAINER_TOKENS_KEY_PREFIX + CURRENT_MASTER_KEY_SUFFIX; - private static final String CONTAINER_TOKENS_PREV_MASTER_KEY = + private static final String CONTAINER_TOKEN_SECRETMANAGER_PREV_MASTER_KEY = CONTAINER_TOKENS_KEY_PREFIX + PREV_MASTER_KEY_SUFFIX; private static final String LOG_DELETER_KEY_PREFIX = "LogDeleters/"; @@ -658,6 +658,12 @@ public class NMLeveldbStateStoreService extends NMStateStoreService { batch.delete(bytes(keyPrefix + CONTAINER_KILLED_KEY_SUFFIX)); batch.delete(bytes(keyPrefix + CONTAINER_EXIT_CODE_KEY_SUFFIX)); batch.delete(bytes(keyPrefix + CONTAINER_UPDATE_TOKEN_SUFFIX)); + batch.delete(bytes(keyPrefix + CONTAINER_START_TIME_KEY_SUFFIX)); + batch.delete(bytes(keyPrefix + CONTAINER_LOG_DIR_KEY_SUFFIX)); + batch.delete(bytes(keyPrefix + CONTAINER_VERSION_KEY_SUFFIX)); + batch.delete(bytes(keyPrefix + CONTAINER_REMAIN_RETRIES_KEY_SUFFIX)); + batch.delete(bytes(keyPrefix + CONTAINER_RESTART_TIMES_SUFFIX)); + batch.delete(bytes(keyPrefix + CONTAINER_WORK_DIR_KEY_SUFFIX)); List<String> unknownKeysForContainer = containerUnknownKeySuffixes .removeAll(containerId); for (String unknownKeySuffix : unknownKeysForContainer) { @@ -1169,13 +1175,13 @@ public class NMLeveldbStateStoreService extends NMStateStoreService { @Override public void storeContainerTokenCurrentMasterKey(MasterKey key) throws IOException { - storeMasterKey(CONTAINER_TOKENS_CURRENT_MASTER_KEY, key); + storeMasterKey(CONTAINER_TOKEN_SECRETMANAGER_CURRENT_MASTER_KEY, key); } @Override public void storeContainerTokenPreviousMasterKey(MasterKey key) throws IOException { - storeMasterKey(CONTAINER_TOKENS_PREV_MASTER_KEY, key); + storeMasterKey(CONTAINER_TOKEN_SECRETMANAGER_PREV_MASTER_KEY, key); } @Override http://git-wip-us.apache.org/repos/asf/hadoop/blob/3d586841/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/recovery/TestNMLeveldbStateStoreService.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/recovery/TestNMLeveldbStateStoreService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/recovery/TestNMLeveldbStateStoreService.java index c8c07d1..8a8cfa2 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/recovery/TestNMLeveldbStateStoreService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/recovery/TestNMLeveldbStateStoreService.java @@ -28,7 +28,9 @@ import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; import static org.mockito.Mockito.isNull; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; import static org.mockito.Mockito.timeout; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -382,6 +384,11 @@ public class TestNMLeveldbStateStoreService { restartStateStore(); recoveredContainers = stateStore.loadContainersState(); assertTrue(recoveredContainers.isEmpty()); + // recover again to check remove clears all containers + restartStateStore(); + NMStateStoreService nmStoreSpy = spy(stateStore); + nmStoreSpy.loadContainersState(); + verify(nmStoreSpy,times(0)).removeContainer(any(ContainerId.class)); } private void validateRetryAttempts(ContainerId containerId) --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org