You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oozie.apache.org by ry...@apache.org on 2014/04/11 20:02:09 UTC

git commit: OOZIE-1773 bulk API returns total = 0 when it's not (ryota)

Repository: oozie
Updated Branches:
  refs/heads/master 6143d949c -> 0050d03eb


OOZIE-1773 bulk API returns total = 0 when it's not (ryota)


Project: http://git-wip-us.apache.org/repos/asf/oozie/repo
Commit: http://git-wip-us.apache.org/repos/asf/oozie/commit/0050d03e
Tree: http://git-wip-us.apache.org/repos/asf/oozie/tree/0050d03e
Diff: http://git-wip-us.apache.org/repos/asf/oozie/diff/0050d03e

Branch: refs/heads/master
Commit: 0050d03ebb7c51b2792106bbc632ea48442bb3a6
Parents: 6143d94
Author: egashira <ry...@yahoo.com>
Authored: Fri Apr 11 10:47:59 2014 -0700
Committer: egashira <ry...@yahoo.com>
Committed: Fri Apr 11 10:47:59 2014 -0700

----------------------------------------------------------------------
 .../oozie/executor/jpa/BulkJPAExecutor.java     |  9 ++++--
 .../jpa/TestBulkMonitorJPAExecutor.java         | 34 ++++++++++++++------
 release-log.txt                                 |  1 +
 3 files changed, 32 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/oozie/blob/0050d03e/core/src/main/java/org/apache/oozie/executor/jpa/BulkJPAExecutor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/oozie/executor/jpa/BulkJPAExecutor.java b/core/src/main/java/org/apache/oozie/executor/jpa/BulkJPAExecutor.java
index 60e5624..8327aee 100644
--- a/core/src/main/java/org/apache/oozie/executor/jpa/BulkJPAExecutor.java
+++ b/core/src/main/java/org/apache/oozie/executor/jpa/BulkJPAExecutor.java
@@ -85,7 +85,7 @@ public class BulkJPAExecutor implements JPAExecutor<BulkResponseInfo> {
             String conditions = actionQuery(em, bundleBeans, actionTimes, responseList);
 
             // Query to get the count of records
-            long total = countQuery(conditions, em, bundleBeans);
+            long total = countQuery(conditions, em, bundleBeans, actionTimes);
 
             BulkResponseInfo bulk = new BulkResponseInfo(responseList, start, len, total);
             return bulk;
@@ -217,7 +217,7 @@ public class BulkJPAExecutor implements JPAExecutor<BulkResponseInfo> {
      * @param bundles
      * @return total count of coord actions
      */
-    private long countQuery(String clause, EntityManager em, List<BundleJobBean> bundles) {
+    private long countQuery(String clause, EntityManager em, List<BundleJobBean> bundles, Map<String, Timestamp> times) {
         Query q = em.createNamedQuery("BULK_MONITOR_COUNT_QUERY");
         StringBuilder getTotal = new StringBuilder(q.toString() + " ");
         // Query: select COUNT(a) from CoordinatorActionBean a, CoordinatorJobBean c
@@ -233,6 +233,11 @@ public class BulkJPAExecutor implements JPAExecutor<BulkResponseInfo> {
         // AND c.bundleId IN (... list of bundle ids) i.e. replace single :bundleId with list
         getTotal = getTotal.replace(offset - 6, offset + 20, inClause(bundleIds, "bundleId", 'c').toString());
         q = em.createQuery(getTotal.toString());
+        Iterator<Entry<String, Timestamp>> iter = times.entrySet().iterator();
+        while (iter.hasNext()) {
+            Entry<String, Timestamp> time = iter.next();
+            q.setParameter(time.getKey(), time.getValue());
+        }
         long total = ((Long) q.getSingleResult()).longValue();
         return total;
     }

http://git-wip-us.apache.org/repos/asf/oozie/blob/0050d03e/core/src/test/java/org/apache/oozie/executor/jpa/TestBulkMonitorJPAExecutor.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/oozie/executor/jpa/TestBulkMonitorJPAExecutor.java b/core/src/test/java/org/apache/oozie/executor/jpa/TestBulkMonitorJPAExecutor.java
index 4536398..b20a8e5 100644
--- a/core/src/test/java/org/apache/oozie/executor/jpa/TestBulkMonitorJPAExecutor.java
+++ b/core/src/test/java/org/apache/oozie/executor/jpa/TestBulkMonitorJPAExecutor.java
@@ -56,11 +56,14 @@ public class TestBulkMonitorJPAExecutor extends XDataTestCase {
     public void testSingleRecord() throws Exception {
 
         String request = "bundle=" + bundleName + ";actionstatus=FAILED;"
-                + "startcreatedtime=2012-07-21T00:00Z;endcreatedtime=2012-07-22T02:00Z";
+                + "startcreatedtime=2012-07-21T00:00Z;endcreatedtime=2012-07-22T02:00Z;"
+                + "startscheduledtime=2012-07-20T23:00Z;endscheduledtime=2012-07-22T03:00Z";
 
-        List<BulkResponseImpl> brList = _execQuery(request);
+        BulkResponseInfo response = _execQuery(request);
+        List<BulkResponseImpl> brList = response.getResponses();
         assertEquals(1, brList.size()); // only 1 action satisfies the
                                         // conditions
+        assertEquals(1, response.getTotal());
         BulkResponseImpl br = brList.get(0);
         assertEquals(bundleName, br.getBundle().getAppName());
         assertEquals("Coord1", br.getCoordinator().getAppName());
@@ -71,10 +74,13 @@ public class TestBulkMonitorJPAExecutor extends XDataTestCase {
     public void testMultipleRecords() throws Exception {
 
         String request = "bundle=" + bundleName + ";actionstatus=FAILED,KILLED;"
-                + "startcreatedtime=2012-07-21T00:00Z;endcreatedtime=2012-07-22T02:00Z";
+                + "startcreatedtime=2012-07-21T00:00Z;endcreatedtime=2012-07-22T02:00Z;"
+                + "startscheduledtime=2012-07-20T23:00Z;endscheduledtime=2012-07-22T03:00Z";
 
-        List<BulkResponseImpl> brList = _execQuery(request);
+        BulkResponseInfo response = _execQuery(request);
+        List<BulkResponseImpl> brList = response.getResponses();
         assertEquals(3, brList.size()); // 3 actions satisfy the conditions
+        assertEquals(3,  response.getTotal());
         List<String> possibleStatus = new ArrayList<String>(Arrays.asList("KILLED", "FAILED"));
         List<String> resultStatus = new ArrayList<String>();
         resultStatus.add(brList.get(0).getAction().getStatus().toString());
@@ -100,8 +106,10 @@ public class TestBulkMonitorJPAExecutor extends XDataTestCase {
     public void testMultipleCoordinators() throws Exception {
         // there are 3 coordinators but giving range as only two of them
         String request = "bundle=" + bundleName + ";coordinators=Coord1,Coord2;actionstatus=KILLED";
-        List<BulkResponseImpl> brList = _execQuery(request);
+        BulkResponseInfo response = _execQuery(request);
+        List<BulkResponseImpl> brList = response.getResponses();
         assertEquals(2, brList.size()); // 2 actions satisfy the conditions
+        assertEquals(2, response.getTotal());
         assertEquals(brList.get(0).getAction().getId(), "Coord1@2");
         assertEquals(brList.get(1).getAction().getId(), "Coord2@1");
     }
@@ -111,8 +119,10 @@ public class TestBulkMonitorJPAExecutor extends XDataTestCase {
         addRecordToCoordActionTable("Coord3", 1, CoordinatorAction.Status.FAILED, "coord-action-get.xml", 0);
 
         String request = "bundle=" + bundleName + ";";
-        List<BulkResponseImpl> brList = _execQuery(request);
+        BulkResponseInfo response = _execQuery(request);
+        List<BulkResponseImpl> brList = response.getResponses();
         assertEquals(4, brList.size()); // 4 actions satisfy the conditions
+        assertEquals(4, response.getTotal());
         List<String> possibleStatus = new ArrayList<String>(Arrays.asList("FAILED", "KILLED"));
         List<String> resultStatus = new ArrayList<String>();
         resultStatus.add(brList.get(0).getAction().getStatus().toString());
@@ -144,9 +154,11 @@ public class TestBulkMonitorJPAExecutor extends XDataTestCase {
         String request = "bundle=" + bundleId + ";actionstatus=FAILED;"
                 + "startcreatedtime=2012-07-21T00:00Z;endcreatedtime=2012-07-22T02:00Z";
 
-        List<BulkResponseImpl> brList = _execQuery(request);
+        BulkResponseInfo response = _execQuery(request);
+        List<BulkResponseImpl> brList = response.getResponses();
         assertEquals(1, brList.size()); // only 1 action satisfies the
                                         // conditions
+        assertEquals(1, response.getTotal());
         BulkResponseImpl br = brList.get(0);
         assertEquals(bundleId, br.getBundle().getId());
         assertEquals("Coord1", br.getCoordinator().getAppName());
@@ -162,17 +174,19 @@ public class TestBulkMonitorJPAExecutor extends XDataTestCase {
         // there are 3 coordinators but giving range as only two of them
         String coordIdsStr = coordIds.get(0) + "," + coordIds.get(1);
         String request = "bundle=" + bundleId + ";coordinators=" + coordIdsStr + ";actionstatus=KILLED";
-        List<BulkResponseImpl> brList = _execQuery(request);
+        BulkResponseInfo response = _execQuery(request);
+        List<BulkResponseImpl> brList = response.getResponses();
         assertEquals(2, brList.size()); // 2 actions satisfy the conditions
+        assertEquals(2, response.getTotal());
         assertEquals(brList.get(0).getAction().getId(), "Coord1@2");
         assertEquals(brList.get(1).getAction().getId(), "Coord2@1");
     }
 
-    private List<BulkResponseImpl> _execQuery(String request) throws JPAExecutorException, BundleEngineException {
+    private BulkResponseInfo _execQuery(String request) throws JPAExecutorException, BundleEngineException {
         BulkJPAExecutor bulkjpa = new BulkJPAExecutor(BundleEngine.parseBulkFilter(request), 1, 10);
         BulkResponseInfo response = jpaService.execute(bulkjpa);
         assertNotNull(response);
-        return response.getResponses();
+        return response;
     }
 
 }

http://git-wip-us.apache.org/repos/asf/oozie/blob/0050d03e/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index a0e5723..8cff400 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -1,5 +1,6 @@
 -- Oozie 4.1.0 release (trunk - unreleased)
 
+OOZIE-1773 bulk API returns total = 0 when it's not (ryota)
 OOZIE-1774 Expected/Actual Duration on UI SLA Tab doesn't show correct information (ryota)
 OOZIE-1754 add order(sort) option and exclude filter for coord job Info (ryota)
 OOZIE-1761 Improve sharelib purging logic (puru via rohini)