YARN-2682. Updated WindowsSecureContainerExecutor to not use
DefaultContainerExecutor#getFirstApplicationDir and use getWorkingDir()
instead. Contributed by Zhihai Xu
(cherry picked from commit 0fd0ebae645e671699f6a6a56a012ebe6dfb5b2a)
Conflicts:
hadoop-yarn-project/CHANGES.txt
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/DefaultContainerExecutor.java
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/a0575524
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/a0575524
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/a0575524
Branch: refs/heads/branch-2.6
Commit: a057552468c41bc5c5194dea07e798e7afeabfec
Parents: e282805
Author: Jian He <[email protected]>
Authored: Thu Oct 16 18:14:34 2014 -0700
Committer: Jian He <[email protected]>
Committed: Wed Oct 22 16:19:40 2014 -0700
----------------------------------------------------------------------
hadoop-yarn-project/CHANGES.txt | 4 ++++
.../yarn/server/nodemanager/DefaultContainerExecutor.java | 7 +------
.../server/nodemanager/WindowsSecureContainerExecutor.java | 5 ++---
3 files changed, 7 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/a0575524/hadoop-yarn-project/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt
index 6bc9d67..df22042 100644
--- a/hadoop-yarn-project/CHANGES.txt
+++ b/hadoop-yarn-project/CHANGES.txt
@@ -321,6 +321,10 @@ Release 2.6.0 - UNRELEASED
YARN-2709. Made timeline client getDelegationToken API retry if
ConnectException
happens. (Li Lu via zjshen)
+ YARN-2682. Updated WindowsSecureContainerExecutor to not use
+ DefaultContainerExecutor#getFirstApplicationDir and use getWorkingDir()
+ instead. (Zhihai Xu via jianhe)
+
OPTIMIZATIONS
BUG FIXES
http://git-wip-us.apache.org/repos/asf/hadoop/blob/a0575524/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/DefaultContainerExecutor.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/DefaultContainerExecutor.java
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/DefaultContainerExecutor.java
index 25810a7..76603ca 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/DefaultContainerExecutor.java
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/DefaultContainerExecutor.java
@@ -462,11 +462,6 @@ public class DefaultContainerExecutor extends
ContainerExecutor {
* $logdir/$user/$appId */
static final short LOGDIR_PERM = (short)0710;
- protected Path getFirstApplicationDir(List<String> localDirs, String user,
- String appId) {
- return getApplicationDir(new Path(localDirs.get(0)), user, appId);
- }
-
private long getDiskFreeSpace(Path base) throws IOException {
return lfs.getFsStatus(base).getRemaining();
}
@@ -497,7 +492,7 @@ public class DefaultContainerExecutor extends
ContainerExecutor {
}
}
- private Path getWorkingDir(List<String> localDirs, String user,
+ protected Path getWorkingDir(List<String> localDirs, String user,
String appId) throws IOException {
Path appStorageDir = null;
long totalAvailable = 0L;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/a0575524/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/WindowsSecureContainerExecutor.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/WindowsSecureContainerExecutor.java
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/WindowsSecureContainerExecutor.java
index ed82766..578a9a2 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/WindowsSecureContainerExecutor.java
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/WindowsSecureContainerExecutor.java
@@ -115,9 +115,8 @@ public class WindowsSecureContainerExecutor extends
DefaultContainerExecutor {
createUserCacheDirs(localDirs, user);
createAppDirs(localDirs, user, appId);
createAppLogDirs(appId, logDirs, user);
-
- // TODO: Why pick first app dir. The same in LCE why not random?
- Path appStorageDir = getFirstApplicationDir(localDirs, user, appId);
+
+ Path appStorageDir = getWorkingDir(localDirs, user, appId);
String tokenFn = String.format(ContainerLocalizer.TOKEN_FILE_NAME_FMT,
locId);
Path tokenDst = new Path(appStorageDir, tokenFn);