You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by jl...@apache.org on 2016/10/28 15:50:14 UTC
hadoop git commit: YARN-5027. NM should clean up app log dirs after
NM restart. Contributed by sandflee (cherry picked from commit
7146359bfd436a76585fb1f3ea93716795308cec)
Repository: hadoop
Updated Branches:
refs/heads/branch-2 0f224d405 -> 2ab80a148
YARN-5027. NM should clean up app log dirs after NM restart. Contributed by sandflee
(cherry picked from commit 7146359bfd436a76585fb1f3ea93716795308cec)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/2ab80a14
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/2ab80a14
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/2ab80a14
Branch: refs/heads/branch-2
Commit: 2ab80a148a9faa12b78c85ba2b3a1427e87c531a
Parents: 0f224d4
Author: Jason Lowe <jl...@apache.org>
Authored: Fri Oct 28 15:48:58 2016 +0000
Committer: Jason Lowe <jl...@apache.org>
Committed: Fri Oct 28 15:49:54 2016 +0000
----------------------------------------------------------------------
.../localizer/ResourceLocalizationService.java | 56 +++++++++++++++++++-
1 file changed, 54 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2ab80a14/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/localizer/ResourceLocalizationService.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/containermanager/localizer/ResourceLocalizationService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/localizer/ResourceLocalizationService.java
index 2cf6ee9..4bd004b 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/localizer/ResourceLocalizationService.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/localizer/ResourceLocalizationService.java
@@ -242,6 +242,7 @@ public class ResourceLocalizationService extends CompositeService
if (!stateStore.canRecover()|| stateStore.isNewlyCreated()) {
cleanUpLocalDirs(lfs, delService);
+ cleanupLogDirs(lfs, delService);
initializeLocalDirs(lfs);
initializeLogDirs(lfs);
}
@@ -1374,9 +1375,9 @@ public class ResourceLocalizationService extends CompositeService
}
}
- private void initializeLogDir(FileContext lfs, String logDir) {
+ private void initializeLogDir(FileContext fs, String logDir) {
try {
- lfs.mkdir(new Path(logDir), null, true);
+ fs.mkdir(new Path(logDir), null, true);
} catch (FileAlreadyExistsException fe) {
// do nothing
} catch (IOException e) {
@@ -1386,6 +1387,57 @@ public class ResourceLocalizationService extends CompositeService
}
}
+ private void cleanupLogDirs(FileContext fs, DeletionService del) {
+ for (String logDir : dirsHandler.getLogDirsForCleanup()) {
+ try {
+ cleanupLogDir(fs, del, logDir);
+ } catch (IOException e) {
+ LOG.warn("failed to cleanup app log dir " + logDir, e);
+ }
+ }
+ }
+
+ private void cleanupLogDir(FileContext fs, DeletionService del,
+ String logDir) throws IOException {
+ if (!fs.util().exists(new Path(logDir))){
+ return;
+ }
+ renameAppLogDir(logDir);
+ deleteAppLogDir(fs, del, logDir);
+ }
+
+ private void renameAppLogDir(String logDir) throws IOException {
+ long currentTimeStamp = System.currentTimeMillis();
+ RemoteIterator<FileStatus> fileStatuses =
+ lfs.listStatus(new Path(logDir));
+ if (fileStatuses != null) {
+ while (fileStatuses.hasNext()) {
+ FileStatus fileStatus = fileStatuses.next();
+ String appName = fileStatus.getPath().getName();
+ if (appName.matches("^application_\\d+_\\d+$")) {
+ lfs.rename(new Path(logDir, appName),
+ new Path(logDir, appName + "_DEL_" + currentTimeStamp));
+ }
+ }
+ }
+ }
+
+ private void deleteAppLogDir(FileContext fs, DeletionService del,
+ String logDir) throws IOException {
+ RemoteIterator<FileStatus> fileStatuses =
+ fs.listStatus(new Path(logDir));
+ if (fileStatuses != null) {
+ while (fileStatuses.hasNext()) {
+ FileStatus fileStatus = fileStatuses.next();
+ String appName = fileStatus.getPath().getName();
+ if (appName.matches("^application_\\d+_\\d+_DEL_\\d+$")) {
+ LOG.info("delete app log dir," + appName);
+ del.delete(null, fileStatus.getPath());
+ }
+ }
+ }
+ }
+
private void cleanUpLocalDirs(FileContext lfs, DeletionService del) {
for (String localDir : dirsHandler.getLocalDirsForCleanup()) {
cleanUpLocalDir(lfs, del, localDir);
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org