YARN-10555. Missing access check before getAppAttempts (#2608)

Co-authored-by: lujie <lujie@foxmail.com>
Signed-off-by: Akira Ajisaka <aajisaka@apache.org>
(cherry picked from commit d92a25b790)
This commit is contained in:
lujiefsi 2021-05-16 23:44:38 -05:00 committed by Akira Ajisaka
parent 2f56e2b54d
commit 137e20cc9b
No known key found for this signature in database
GPG Key ID: C1EDBB9CA400FD50
3 changed files with 5 additions and 5 deletions

View File

@ -142,7 +142,7 @@ protected void generateApplicationTable(Block html,
continue;
}
AppAttemptInfo attemptInfo =
new AppAttemptInfo(this.rm, rmAppAttempt, rmApp.getUser(),
new AppAttemptInfo(this.rm, rmAppAttempt, true, rmApp.getUser(),
WebAppUtils.getHttpSchemePrefix(conf));
Set<String> nodes = rmAppAttempt.getBlacklistedNodes();
// nodes which are blacklisted by the application

View File

@ -1074,7 +1074,7 @@ public AppAttemptsInfo getAppAttempts(@Context HttpServletRequest hsr,
AppAttemptsInfo appAttemptsInfo = new AppAttemptsInfo();
for (RMAppAttempt attempt : app.getAppAttempts().values()) {
AppAttemptInfo attemptInfo = new AppAttemptInfo(rm, attempt,
app.getUser(), hsr.getScheme() + "://");
hasAccess(app, hsr), app.getUser(), hsr.getScheme() + "://");
appAttemptsInfo.add(attemptInfo);
}

View File

@ -49,8 +49,8 @@ public class AppAttemptInfo {
public AppAttemptInfo() {
}
public AppAttemptInfo(ResourceManager rm, RMAppAttempt attempt, String user,
String schemePrefix) {
public AppAttemptInfo(ResourceManager rm, RMAppAttempt attempt,
Boolean hasAccess, String user, String schemePrefix) {
this.startTime = 0;
this.containerId = "";
this.nodeHttpAddress = "";
@ -63,7 +63,7 @@ public AppAttemptInfo(ResourceManager rm, RMAppAttempt attempt, String user,
this.startTime = attempt.getStartTime();
this.finishedTime = attempt.getFinishTime();
Container masterContainer = attempt.getMasterContainer();
if (masterContainer != null) {
if (masterContainer != null && hasAccess) {
this.containerId = masterContainer.getId().toString();
this.nodeHttpAddress = masterContainer.getNodeHttpAddress();
this.nodeId = masterContainer.getNodeId().toString();