You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by tb...@apache.org on 2013/04/23 21:26:39 UTC
svn commit: r1471108 - in /incubator/ambari/trunk/ambari-server/src:
main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
Author: tbeerbower
Date: Tue Apr 23 19:26:39 2013
New Revision: 1471108
URL: http://svn.apache.org/r1471108
Log:
AMBARI-1996 - Request resource provider handler unnecessarily queries host_role_command table.
Modified:
incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java?rev=1471108&r1=1471107&r2=1471108&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java Tue Apr 23 19:26:39 2013
@@ -31,7 +31,6 @@ import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
-import com.google.inject.persist.Transactional;
import com.google.gson.Gson;
import com.google.inject.Inject;
import com.google.inject.Injector;
@@ -3618,11 +3617,15 @@ public class AmbariManagementControllerI
return Collections.emptySet();
}
- @Transactional
- Collection<RequestStatusResponse> getRequestStatusResponses(List<Long> requestIds) {
- List<HostRoleCommand> hostRoleCommands = actionManager.getAllTasksByRequestIds(requestIds);
- Map<Long, String> requestContexts = actionManager.getRequestContext(requestIds);
- Map<Long, RequestStatusResponse> responseMap = new HashMap<Long, RequestStatusResponse>();
+ /**
+ * Get a collection of request responses for the given list of request ids. Note that
+ * this method populates request resources only and does NOT populate the set of task
+ * sub-resources in each request response.
+ */
+ private Collection<RequestStatusResponse> getRequestStatusResponsesWithoutTasks(List<Long> requestIds) {
+ List<HostRoleCommand> hostRoleCommands = actionManager.getAllTasksByRequestIds(requestIds);
+ Map<Long, String> requestContexts = actionManager.getRequestContext(requestIds);
+ Map<Long, RequestStatusResponse> responseMap = new HashMap<Long, RequestStatusResponse>();
for (HostRoleCommand hostRoleCommand : hostRoleCommands) {
Long requestId = hostRoleCommand.getRequestId();
@@ -3630,17 +3633,17 @@ public class AmbariManagementControllerI
if (response == null) {
response = new RequestStatusResponse(requestId);
response.setRequestContext(requestContexts.get(requestId));
- response.setTasks(new ArrayList<ShortTaskStatus>());
responseMap.put(requestId, response);
}
-
- response.getTasks().add(new ShortTaskStatus(hostRoleCommand));
}
-
return responseMap.values();
}
-
+ /**
+ * Get a request response for the given request ids. Note that this method
+ * fully populates a request resource including the set of task sub-resources
+ * in the request response.
+ */
private RequestStatusResponse getRequestStatusResponse(long requestId) {
RequestStatusResponse response = new RequestStatusResponse(requestId);
List<HostRoleCommand> hostRoleCommands =
@@ -3660,8 +3663,10 @@ public class AmbariManagementControllerI
@Override
public Set<RequestStatusResponse> getRequestStatus(
RequestStatusRequest request) throws AmbariException{
- Set<RequestStatusResponse> response = new HashSet<RequestStatusResponse>();
- if (request.getRequestId() == null) {
+ Set<RequestStatusResponse> response = new HashSet<RequestStatusResponse>();
+ Long requestId = request.getRequestId();
+
+ if (requestId == null) {
RequestStatus requestStatus = null;
if (request.getRequestStatus() != null) {
requestStatus = RequestStatus.valueOf(request.getRequestStatus());
@@ -3671,21 +3676,19 @@ public class AmbariManagementControllerI
+ ", requestId=null"
+ ", requestStatus=" + requestStatus);
}
- List<Long> requestIds = actionManager.getRequestsByStatus(requestStatus);
- response.addAll(getRequestStatusResponses(requestIds));
-
+ response.addAll(getRequestStatusResponsesWithoutTasks(
+ actionManager.getRequestsByStatus(requestStatus)));
} else {
- RequestStatusResponse requestStatusResponse = getRequestStatusResponse(
- request.getRequestId().longValue());
+ Collection<RequestStatusResponse> responses = getRequestStatusResponsesWithoutTasks(
+ Collections.singletonList(requestId.longValue()));
//todo: correlate request with cluster
- if (requestStatusResponse.getTasks().size() == 0) {
+ if (responses.isEmpty()) {
//todo: should be thrown lower in stack but we only want to throw if id was specified
//todo: and we currently iterate over all id's and invoke for each if id is not specified
throw new ObjectNotFoundException("Request resource doesn't exist.");
- } else {
- response.add(requestStatusResponse);
}
+ response.addAll(responses);
}
return response;
}
Modified: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java?rev=1471108&r1=1471107&r2=1471108&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java (original)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java Tue Apr 23 19:26:39 2013
@@ -1498,7 +1498,6 @@ public class AmbariManagementControllerT
Assert.assertNotNull(statusResponse);
Assert.assertEquals(trackAction.getRequestId(),
statusResponse.getRequestId());
- Assert.assertEquals(5, statusResponse.getTasks().size());
Set<TaskStatusRequest> taskRequests = new HashSet<TaskStatusRequest>();
TaskStatusRequest t1, t2;
@@ -3384,18 +3383,10 @@ public class AmbariManagementControllerT
RequestStatusResponse requestStatusResponse =
requestStatusResponses.iterator().next();
assertEquals(requestId, requestStatusResponse.getRequestId());
- assertEquals(2, requestStatusResponse.getTasks().size());
assertEquals(context, requestStatusResponse.getRequestContext());
- ShortTaskStatus task1 = requestStatusResponse.getTasks().get(0);
- ShortTaskStatus task2 = requestStatusResponse.getTasks().get(1);
-
- assertEquals(RoleCommand.START.toString(), task1.getCommand());
- assertEquals(Role.HBASE_MASTER.toString(), task1.getRole());
-
Set<TaskStatusRequest> taskStatusRequests = new HashSet<TaskStatusRequest>();
- taskStatusRequests.add(new TaskStatusRequest(requestId, task1.getTaskId()));
- taskStatusRequests.add(new TaskStatusRequest(requestId, task2.getTaskId()));
+ taskStatusRequests.add(new TaskStatusRequest(requestId, null));
Set<TaskStatusResponse> taskStatusResponses =
controller.getTaskStatus(taskStatusRequests);