|
@@ -31,6 +31,13 @@ import javax.ws.rs.WebApplicationException;
|
|
|
|
|
|
import org.apache.hadoop.security.UserGroupInformation;
|
|
|
import org.apache.hadoop.security.authorize.AuthorizationException;
|
|
|
+import org.apache.hadoop.yarn.api.ApplicationBaseProtocol;
|
|
|
+import org.apache.hadoop.yarn.api.protocolrecords.GetApplicationAttemptReportRequest;
|
|
|
+import org.apache.hadoop.yarn.api.protocolrecords.GetApplicationAttemptsRequest;
|
|
|
+import org.apache.hadoop.yarn.api.protocolrecords.GetApplicationReportRequest;
|
|
|
+import org.apache.hadoop.yarn.api.protocolrecords.GetApplicationsRequest;
|
|
|
+import org.apache.hadoop.yarn.api.protocolrecords.GetContainerReportRequest;
|
|
|
+import org.apache.hadoop.yarn.api.protocolrecords.GetContainersRequest;
|
|
|
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
|
|
|
import org.apache.hadoop.yarn.api.records.ApplicationAttemptReport;
|
|
|
import org.apache.hadoop.yarn.api.records.ApplicationId;
|
|
@@ -39,13 +46,6 @@ import org.apache.hadoop.yarn.api.records.ContainerId;
|
|
|
import org.apache.hadoop.yarn.api.records.ContainerReport;
|
|
|
import org.apache.hadoop.yarn.api.records.FinalApplicationStatus;
|
|
|
import org.apache.hadoop.yarn.api.records.YarnApplicationState;
|
|
|
-import org.apache.hadoop.yarn.api.ApplicationBaseProtocol;
|
|
|
-import org.apache.hadoop.yarn.api.protocolrecords.GetApplicationAttemptReportRequest;
|
|
|
-import org.apache.hadoop.yarn.api.protocolrecords.GetApplicationAttemptsRequest;
|
|
|
-import org.apache.hadoop.yarn.api.protocolrecords.GetApplicationReportRequest;
|
|
|
-import org.apache.hadoop.yarn.api.protocolrecords.GetApplicationsRequest;
|
|
|
-import org.apache.hadoop.yarn.api.protocolrecords.GetContainerReportRequest;
|
|
|
-import org.apache.hadoop.yarn.api.protocolrecords.GetContainersRequest;
|
|
|
import org.apache.hadoop.yarn.server.webapp.dao.AppAttemptInfo;
|
|
|
import org.apache.hadoop.yarn.server.webapp.dao.AppAttemptsInfo;
|
|
|
import org.apache.hadoop.yarn.server.webapp.dao.AppInfo;
|
|
@@ -71,13 +71,11 @@ public class WebServices {
|
|
|
String startedEnd, String finishBegin, String finishEnd,
|
|
|
Set<String> applicationTypes) {
|
|
|
UserGroupInformation callerUGI = getUser(req);
|
|
|
- long num = 0;
|
|
|
- boolean checkCount = false;
|
|
|
boolean checkStart = false;
|
|
|
boolean checkEnd = false;
|
|
|
boolean checkAppTypes = false;
|
|
|
boolean checkAppStates = false;
|
|
|
- long countNum = 0;
|
|
|
+ long countNum = Long.MAX_VALUE;
|
|
|
|
|
|
// set values suitable in case both of begin/end not specified
|
|
|
long sBegin = 0;
|
|
@@ -86,7 +84,6 @@ public class WebServices {
|
|
|
long fEnd = Long.MAX_VALUE;
|
|
|
|
|
|
if (count != null && !count.isEmpty()) {
|
|
|
- checkCount = true;
|
|
|
countNum = Long.parseLong(count);
|
|
|
if (countNum <= 0) {
|
|
|
throw new BadRequestException("limit value must be greater then 0");
|
|
@@ -147,19 +144,20 @@ public class WebServices {
|
|
|
|
|
|
AppsInfo allApps = new AppsInfo();
|
|
|
Collection<ApplicationReport> appReports = null;
|
|
|
+ final GetApplicationsRequest request =
|
|
|
+ GetApplicationsRequest.newInstance();
|
|
|
+ request.setLimit(countNum);
|
|
|
try {
|
|
|
if (callerUGI == null) {
|
|
|
// TODO: the request should take the params like what RMWebServices does
|
|
|
// in YARN-1819.
|
|
|
- GetApplicationsRequest request = GetApplicationsRequest.newInstance();
|
|
|
appReports = appBaseProt.getApplications(request).getApplicationList();
|
|
|
} else {
|
|
|
appReports = callerUGI.doAs(
|
|
|
new PrivilegedExceptionAction<Collection<ApplicationReport>> () {
|
|
|
@Override
|
|
|
public Collection<ApplicationReport> run() throws Exception {
|
|
|
- return appBaseProt.getApplications(
|
|
|
- GetApplicationsRequest.newInstance()).getApplicationList();
|
|
|
+ return appBaseProt.getApplications(request).getApplicationList();
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@@ -168,10 +166,6 @@ public class WebServices {
|
|
|
}
|
|
|
for (ApplicationReport appReport : appReports) {
|
|
|
|
|
|
- if (checkCount && num == countNum) {
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
if (checkAppStates
|
|
|
&& !appStates.contains(appReport.getYarnApplicationState().toString()
|
|
|
.toLowerCase())) {
|
|
@@ -211,7 +205,6 @@ public class WebServices {
|
|
|
AppInfo app = new AppInfo(appReport);
|
|
|
|
|
|
allApps.add(app);
|
|
|
- num++;
|
|
|
}
|
|
|
return allApps;
|
|
|
}
|