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());
+  }
 }

Reply via email to