Repository: ambari Updated Branches: refs/heads/trunk ec516c94f -> 58064a862
AMBARI-5134. Request Schedule Batch request, return code, status and message not persisted. (swagle) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/d80ae0bd Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/d80ae0bd Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/d80ae0bd Branch: refs/heads/trunk Commit: d80ae0bd1f38d992fdef2e7305b80a4353305d09 Parents: ec516c9 Author: Siddharth Wagle <[email protected]> Authored: Wed Mar 19 12:59:59 2014 -0700 Committer: Siddharth Wagle <[email protected]> Committed: Wed Mar 19 14:11:42 2014 -0700 ---------------------------------------------------------------------- .../orm/dao/RequestScheduleBatchRequestDAO.java | 3 +- .../RequestScheduleBatchRequestEntity.java | 14 +++++++ .../state/scheduler/RequestExecutionImpl.java | 33 ++++++++------- .../server/state/RequestExecutionTest.java | 42 ++++++++++++++++++++ 4 files changed, 76 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/d80ae0bd/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RequestScheduleBatchRequestDAO.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RequestScheduleBatchRequestDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RequestScheduleBatchRequestDAO.java index b073bf0..d0f5d79 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RequestScheduleBatchRequestDAO.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RequestScheduleBatchRequestDAO.java @@ -68,8 +68,7 @@ public class RequestScheduleBatchRequestDAO { } @Transactional - public RequestScheduleBatchRequestEntity merge - (RequestScheduleBatchRequestEntity batchRequestEntity) { + public RequestScheduleBatchRequestEntity merge(RequestScheduleBatchRequestEntity batchRequestEntity) { return entityManagerProvider.get().merge(batchRequestEntity); } http://git-wip-us.apache.org/repos/asf/ambari/blob/d80ae0bd/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RequestScheduleBatchRequestEntity.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RequestScheduleBatchRequestEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RequestScheduleBatchRequestEntity.java index 0775df6..923a843 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RequestScheduleBatchRequestEntity.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RequestScheduleBatchRequestEntity.java @@ -184,4 +184,18 @@ public class RequestScheduleBatchRequestEntity { result = 31 * result + batchId.hashCode(); return result; } + + @Override + public String toString() { + return "RequestScheduleBatchRequestEntity{" + + "scheduleId=" + scheduleId + + ", batchId=" + batchId + + ", requestId=" + requestId + + ", requestType='" + requestType + '\'' + + ", requestUri='" + requestUri + '\'' + + ", requestStatus='" + requestStatus + '\'' + + ", returnCode=" + returnCode + + ", returnMessage='" + returnMessage + '\'' + + '}'; + } } http://git-wip-us.apache.org/repos/asf/ambari/blob/d80ae0bd/ambari-server/src/main/java/org/apache/ambari/server/state/scheduler/RequestExecutionImpl.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/scheduler/RequestExecutionImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/scheduler/RequestExecutionImpl.java index 2e7fa11..dcc9440 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/scheduler/RequestExecutionImpl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/scheduler/RequestExecutionImpl.java @@ -427,24 +427,28 @@ public class RequestExecutionImpl implements RequestExecution { public void updateBatchRequest(long batchId, BatchRequestResponse batchRequestResponse, boolean statusOnly) { - long executionId = requestScheduleEntity.getScheduleId(); - RequestScheduleBatchRequestEntityPK batchRequestEntityPK = new - RequestScheduleBatchRequestEntityPK(); - batchRequestEntityPK.setScheduleId(executionId); - batchRequestEntityPK.setBatchId(batchId); - RequestScheduleBatchRequestEntity batchRequestEntity = - batchRequestDAO.findByPk(batchRequestEntityPK); + RequestScheduleBatchRequestEntity batchRequestEntity = null; - batchRequestEntity.setRequestStatus(batchRequestResponse.getStatus()); - - if (!statusOnly) { - batchRequestEntity.setReturnCode(batchRequestResponse.getReturnCode()); - batchRequestEntity.setRequestId(batchRequestResponse.getRequestId()); - batchRequestEntity.setReturnMessage(batchRequestResponse.getReturnMessage()); + for (RequestScheduleBatchRequestEntity entity : + requestScheduleEntity.getRequestScheduleBatchRequestEntities()) { + if (entity.getBatchId() == batchId + && entity.getScheduleId() == requestScheduleEntity.getScheduleId()) { + batchRequestEntity = entity; + } } - batchRequestDAO.merge(batchRequestEntity); + if (batchRequestEntity != null) { + batchRequestEntity.setRequestStatus(batchRequestResponse.getStatus()); + + if (!statusOnly) { + batchRequestEntity.setReturnCode(batchRequestResponse.getReturnCode()); + batchRequestEntity.setRequestId(batchRequestResponse.getRequestId()); + batchRequestEntity.setReturnMessage(batchRequestResponse.getReturnMessage()); + } + + batchRequestDAO.merge(batchRequestEntity); + } BatchRequest batchRequest = getBatchRequest(batchId); @@ -456,6 +460,7 @@ public class RequestExecutionImpl implements RequestExecution { } setLastExecutionStatus(batchRequestResponse.getStatus()); + requestScheduleDAO.merge(requestScheduleEntity); } @Override http://git-wip-us.apache.org/repos/asf/ambari/blob/d80ae0bd/ambari-server/src/test/java/org/apache/ambari/server/state/RequestExecutionTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/RequestExecutionTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/RequestExecutionTest.java index 22f8301..8759089 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/state/RequestExecutionTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/state/RequestExecutionTest.java @@ -31,6 +31,7 @@ import org.apache.ambari.server.orm.entities.RequestScheduleBatchRequestEntity; import org.apache.ambari.server.orm.entities.RequestScheduleEntity; import org.apache.ambari.server.state.scheduler.Batch; import org.apache.ambari.server.state.scheduler.BatchRequest; +import org.apache.ambari.server.state.scheduler.BatchRequestResponse; import org.apache.ambari.server.state.scheduler.BatchSettings; import org.apache.ambari.server.state.scheduler.RequestExecution; import org.apache.ambari.server.state.scheduler.RequestExecutionFactory; @@ -341,4 +342,45 @@ public class RequestExecutionTest { Assert.assertEquals(RequestExecution.Status.COMPLETED.name(), scheduleEntity.getStatus()); } + + @Test + public void testUpdateBatchRequest() throws Exception { + RequestExecution requestExecution = createRequestSchedule(); + Assert.assertNotNull(requestExecution); + Assert.assertNotNull(cluster.getAllRequestExecutions().get + (requestExecution.getId())); + + RequestScheduleEntity scheduleEntity = requestScheduleDAO.findById(requestExecution.getId()); + Assert.assertNotNull(scheduleEntity); + Assert.assertEquals(RequestExecution.Status.SCHEDULED.name(), scheduleEntity.getStatus()); + + Collection<RequestScheduleBatchRequestEntity> batchRequestEntities = + scheduleEntity.getRequestScheduleBatchRequestEntities(); + + Assert.assertNotNull(batchRequestEntities); + Assert.assertEquals(2, batchRequestEntities.size()); + + BatchRequestResponse batchRequestResponse = new BatchRequestResponse(); + batchRequestResponse.setRequestId(1L); + batchRequestResponse.setReturnCode(200); + batchRequestResponse.setReturnMessage("test"); + batchRequestResponse.setStatus("IN_PROGRESS"); + + requestExecution.updateBatchRequest(10L, batchRequestResponse, false); + + scheduleEntity = requestScheduleDAO.findById(requestExecution.getId()); + RequestScheduleBatchRequestEntity testEntity = null; + + for (RequestScheduleBatchRequestEntity entity : + scheduleEntity.getRequestScheduleBatchRequestEntities()) { + if (entity.getBatchId().equals(10L)) { + testEntity = entity; + } + } + + Assert.assertNotNull(testEntity); + Assert.assertEquals(200, testEntity.getReturnCode().intValue()); + Assert.assertEquals("test", testEntity.getReturnMessage()); + Assert.assertEquals("IN_PROGRESS", testEntity.getRequestStatus()); + } }
