Repository: oozie Updated Branches: refs/heads/master 0d497504e -> 3a6fe570a
OOZIE-2266 Fix 'total' actions returned in coordinator job info (sai-krish via rkanter) Project: http://git-wip-us.apache.org/repos/asf/oozie/repo Commit: http://git-wip-us.apache.org/repos/asf/oozie/commit/3a6fe570 Tree: http://git-wip-us.apache.org/repos/asf/oozie/tree/3a6fe570 Diff: http://git-wip-us.apache.org/repos/asf/oozie/diff/3a6fe570 Branch: refs/heads/master Commit: 3a6fe570a2fb1c11fab3c961f25e56e0e91c83ff Parents: 0d49750 Author: Robert Kanter <[email protected]> Authored: Mon Jun 22 17:23:26 2015 -0700 Committer: Robert Kanter <[email protected]> Committed: Mon Jun 22 17:23:26 2015 -0700 ---------------------------------------------------------------------- .../oozie/command/coord/CoordJobXCommand.java | 2 +- .../java/org/apache/oozie/coord/CoordUtils.java | 69 ++++++++++++ .../CoordActionsCountForJobIdJPAExecutor.java | 33 +++++- .../CoordJobGetActionsSubsetJPAExecutor.java | 75 +------------ .../command/coord/TestCoordJobsXCommand.java | 44 ++++++++ .../org/apache/oozie/coord/TestCoordUtils.java | 37 +++++++ ...estCoordActionsCountForJobIdJPAExecutor.java | 106 +++++++++++++++++++ release-log.txt | 1 + 8 files changed, 293 insertions(+), 74 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/oozie/blob/3a6fe570/core/src/main/java/org/apache/oozie/command/coord/CoordJobXCommand.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/oozie/command/coord/CoordJobXCommand.java b/core/src/main/java/org/apache/oozie/command/coord/CoordJobXCommand.java index 51b09a2..fcc86a8 100644 --- a/core/src/main/java/org/apache/oozie/command/coord/CoordJobXCommand.java +++ b/core/src/main/java/org/apache/oozie/command/coord/CoordJobXCommand.java @@ -129,7 +129,7 @@ public class CoordJobXCommand extends CoordinatorXCommand<CoordinatorJobBean> { if (jpaService != null) { coordJob = jpaService.execute(new CoordJobGetJPAExecutor(id)); if (getActionInfo) { - int numAction = jpaService.execute(new CoordActionsCountForJobIdJPAExecutor(id)); + int numAction = jpaService.execute(new CoordActionsCountForJobIdJPAExecutor(id, filterMap)); List<CoordinatorActionBean> coordActions = null; if (len == 0) { coordActions = new ArrayList<CoordinatorActionBean>(); http://git-wip-us.apache.org/repos/asf/oozie/blob/3a6fe570/core/src/main/java/org/apache/oozie/coord/CoordUtils.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/oozie/coord/CoordUtils.java b/core/src/main/java/org/apache/oozie/coord/CoordUtils.java index 7f05ef5..94c6974 100644 --- a/core/src/main/java/org/apache/oozie/coord/CoordUtils.java +++ b/core/src/main/java/org/apache/oozie/coord/CoordUtils.java @@ -25,11 +25,14 @@ import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.Map; +import java.util.HashMap; import java.util.concurrent.TimeUnit; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.conf.Configuration; import org.apache.oozie.CoordinatorActionBean; +import org.apache.oozie.CoordinatorEngine; import org.apache.oozie.ErrorCode; import org.apache.oozie.XException; import org.apache.oozie.client.OozieClient; @@ -45,12 +48,14 @@ import org.apache.oozie.service.XLogService; import org.apache.oozie.sla.SLAOperations; import org.apache.oozie.util.CoordActionsInDateRange; import org.apache.oozie.util.DateUtils; +import org.apache.oozie.util.Pair; import org.apache.oozie.util.ParamChecker; import org.apache.oozie.util.XLog; import org.jdom.Element; import com.google.common.annotations.VisibleForTesting; + public class CoordUtils { public static final String HADOOP_USER = "user.name"; @@ -345,4 +350,68 @@ public class CoordUtils { return false; } + // Form the where clause to filter by status values + public static Map<String, Object> getWhereClause(StringBuilder sb, Map<Pair<String, CoordinatorEngine.FILTER_COMPARATORS>, + List<Object>> filterMap) { + Map<String, Object> params = new HashMap<String, Object>(); + int pcnt= 1; + for (Map.Entry<Pair<String, CoordinatorEngine.FILTER_COMPARATORS>, List<Object>> filter : filterMap.entrySet()) { + String field = filter.getKey().getFist(); + CoordinatorEngine.FILTER_COMPARATORS comp = filter.getKey().getSecond(); + String sqlField; + if (field.equals(OozieClient.FILTER_STATUS)) { + sqlField = "a.statusStr"; + } else if (field.equals(OozieClient.FILTER_NOMINAL_TIME)) { + sqlField = "a.nominalTimestamp"; + } else { + throw new IllegalArgumentException("Invalid filter key " + field); + } + + sb.append(" and ").append(sqlField).append(" "); + switch (comp) { + case EQUALS: + sb.append("IN ("); + params.putAll(appendParams(sb, filter.getValue(), pcnt)); + sb.append(")"); + break; + + case NOT_EQUALS: + sb.append("NOT IN ("); + params.putAll(appendParams(sb, filter.getValue(), pcnt)); + sb.append(")"); + break; + + case GREATER: + case GREATER_EQUAL: + case LESSTHAN: + case LESSTHAN_EQUAL: + if (filter.getValue().size() != 1) { + throw new IllegalArgumentException(field + comp.getSign() + " can't have more than 1 values"); + } + + sb.append(comp.getSign()).append(" "); + params.putAll(appendParams(sb, filter.getValue(), pcnt)); + break; + } + + pcnt += filter.getValue().size(); + } + sb.append(" "); + return params; + } + + private static Map<String, Object> appendParams(StringBuilder sb, List<Object> value, int sindex) { + Map<String, Object> params = new HashMap<String, Object>(); + boolean first = true; + for (Object val : value) { + String pname = "p" + sindex++; + params.put(pname, val); + if (!first) { + sb.append(", "); + } + sb.append(':').append(pname); + first = false; + } + return params; + } } http://git-wip-us.apache.org/repos/asf/oozie/blob/3a6fe570/core/src/main/java/org/apache/oozie/executor/jpa/CoordActionsCountForJobIdJPAExecutor.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/oozie/executor/jpa/CoordActionsCountForJobIdJPAExecutor.java b/core/src/main/java/org/apache/oozie/executor/jpa/CoordActionsCountForJobIdJPAExecutor.java index 997b153..f49848f 100644 --- a/core/src/main/java/org/apache/oozie/executor/jpa/CoordActionsCountForJobIdJPAExecutor.java +++ b/core/src/main/java/org/apache/oozie/executor/jpa/CoordActionsCountForJobIdJPAExecutor.java @@ -21,19 +21,27 @@ package org.apache.oozie.executor.jpa; import javax.persistence.EntityManager; import javax.persistence.Query; +import org.apache.oozie.coord.CoordUtils; +import org.apache.oozie.CoordinatorEngine.FILTER_COMPARATORS; import org.apache.oozie.ErrorCode; +import org.apache.oozie.util.Pair; import org.apache.oozie.util.ParamChecker; +import java.util.List; +import java.util.Map; + /** * Load the number of running actions for a coordinator job. */ public class CoordActionsCountForJobIdJPAExecutor implements JPAExecutor<Integer> { private String coordJobId = null; + private Map<Pair<String, FILTER_COMPARATORS>, List<Object>> filterMap; - public CoordActionsCountForJobIdJPAExecutor(String coordJobId) { + public CoordActionsCountForJobIdJPAExecutor(String coordJobId, Map<Pair<String, FILTER_COMPARATORS>, List<Object>> filterMap) { ParamChecker.notNull(coordJobId, "coordJobId"); this.coordJobId = coordJobId; + this.filterMap = filterMap; } @Override @@ -45,7 +53,7 @@ public class CoordActionsCountForJobIdJPAExecutor implements JPAExecutor<Integer public Integer execute(EntityManager em) throws JPAExecutorException { try { Query q = em.createNamedQuery("GET_COORD_ACTIONS_COUNT_BY_JOBID"); - q.setParameter("jobId", coordJobId); + q = setQueryParameters(q, em); Long count = (Long) q.getSingleResult(); return Integer.valueOf(count.intValue()); } @@ -54,4 +62,25 @@ public class CoordActionsCountForJobIdJPAExecutor implements JPAExecutor<Integer } } + private Query setQueryParameters(Query q, EntityManager em){ + Map<String, Object> params = null; + if (filterMap != null) { + // Add the filter clause + String query = q.toString(); + StringBuilder sbTotal = new StringBuilder(query); + // Get the 'where' clause for status filters + StringBuilder statusClause = new StringBuilder(); + params = CoordUtils.getWhereClause(statusClause, filterMap); + sbTotal.insert(sbTotal.length(), statusClause); + q = em.createQuery(sbTotal.toString()); + } + if (params != null) { + for (String pname : params.keySet()) { + q.setParameter(pname, params.get(pname)); + } + } + q.setParameter("jobId", coordJobId); + return q; + } + } http://git-wip-us.apache.org/repos/asf/oozie/blob/3a6fe570/core/src/main/java/org/apache/oozie/executor/jpa/CoordJobGetActionsSubsetJPAExecutor.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/oozie/executor/jpa/CoordJobGetActionsSubsetJPAExecutor.java b/core/src/main/java/org/apache/oozie/executor/jpa/CoordJobGetActionsSubsetJPAExecutor.java index ffe91ec..9db9daa 100644 --- a/core/src/main/java/org/apache/oozie/executor/jpa/CoordJobGetActionsSubsetJPAExecutor.java +++ b/core/src/main/java/org/apache/oozie/executor/jpa/CoordJobGetActionsSubsetJPAExecutor.java @@ -18,12 +18,12 @@ package org.apache.oozie.executor.jpa; +import org.apache.oozie.coord.CoordUtils; import org.apache.oozie.CoordinatorActionBean; import org.apache.oozie.CoordinatorEngine.FILTER_COMPARATORS; import org.apache.oozie.ErrorCode; import org.apache.oozie.StringBlob; import org.apache.oozie.client.CoordinatorAction; -import org.apache.oozie.client.OozieClient; import org.apache.oozie.service.Services; import org.apache.oozie.util.DateUtils; import org.apache.oozie.util.Pair; @@ -33,10 +33,8 @@ import javax.persistence.EntityManager; import javax.persistence.Query; import java.sql.Timestamp; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Map.Entry; /** * Load coordinator actions by offset and len (a subset) for a coordinator job. @@ -54,8 +52,8 @@ public class CoordJobGetActionsSubsetJPAExecutor implements JPAExecutor<List<Coo this.coordJobId = coordJobId; } - public CoordJobGetActionsSubsetJPAExecutor(String coordJobId, Map<Pair<String, FILTER_COMPARATORS>, List<Object>> filterMap, - int offset, int len, boolean desc) { + public CoordJobGetActionsSubsetJPAExecutor(String coordJobId, Map<Pair<String, FILTER_COMPARATORS>, + List<Object>> filterMap, int offset, int len, boolean desc) { this(coordJobId); this.filterMap = filterMap; this.offset = offset; @@ -104,7 +102,7 @@ public class CoordJobGetActionsSubsetJPAExecutor implements JPAExecutor<List<Coo int offset = query.lastIndexOf("order"); // Get the 'where' clause for status filters StringBuilder statusClause = new StringBuilder(); - params = getWhereClause(statusClause, filterMap); + params = CoordUtils.getWhereClause(statusClause, filterMap); // Insert 'where' before 'order by' sbTotal.insert(offset, statusClause); q = em.createQuery(sbTotal.toString()); @@ -123,71 +121,6 @@ public class CoordJobGetActionsSubsetJPAExecutor implements JPAExecutor<List<Coo return q; } - // Form the where clause to filter by status values - private Map<String, Object> getWhereClause(StringBuilder sb, Map<Pair<String, FILTER_COMPARATORS>, - List<Object>> filterMap) { - Map<String, Object> params = new HashMap<String, Object>(); - int pcnt= 1; - for (Entry<Pair<String, FILTER_COMPARATORS>, List<Object>> filter : filterMap.entrySet()) { - String field = filter.getKey().getFist(); - FILTER_COMPARATORS comp = filter.getKey().getSecond(); - String sqlField; - if (field.equals(OozieClient.FILTER_STATUS)) { - sqlField = "a.statusStr"; - } else if (field.equals(OozieClient.FILTER_NOMINAL_TIME)) { - sqlField = "a.nominalTimestamp"; - } else { - throw new IllegalArgumentException("Invalid filter key " + field); - } - - sb.append(" and ").append(sqlField).append(" "); - switch (comp) { - case EQUALS: - sb.append("IN ("); - params.putAll(appendParams(sb, filter.getValue(), pcnt)); - sb.append(")"); - break; - - case NOT_EQUALS: - sb.append("NOT IN ("); - params.putAll(appendParams(sb, filter.getValue(), pcnt)); - sb.append(")"); - break; - - case GREATER: - case GREATER_EQUAL: - case LESSTHAN: - case LESSTHAN_EQUAL: - if (filter.getValue().size() != 1) { - throw new IllegalArgumentException(field + comp.getSign() + " can't have more than 1 values"); - } - - sb.append(comp.getSign()).append(" "); - params.putAll(appendParams(sb, filter.getValue(), pcnt)); - break; - } - - pcnt += filter.getValue().size(); - } - sb.append(" "); - return params; - } - - private Map<String, Object> appendParams(StringBuilder sb, List<Object> value, int sindex) { - Map<String, Object> params = new HashMap<String, Object>(); - boolean first = true; - for (Object val : value) { - String pname = "p" + sindex++; - params.put(pname, val); - if (!first) { - sb.append(", "); - } - sb.append(':').append(pname); - first = false; - } - return params; - } - private CoordinatorActionBean getBeanForRunningCoordAction(Object arr[]) { CoordinatorActionBean bean = new CoordinatorActionBean(); if (arr[0] != null) { http://git-wip-us.apache.org/repos/asf/oozie/blob/3a6fe570/core/src/test/java/org/apache/oozie/command/coord/TestCoordJobsXCommand.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/oozie/command/coord/TestCoordJobsXCommand.java b/core/src/test/java/org/apache/oozie/command/coord/TestCoordJobsXCommand.java index df86bc7..212cbbd 100644 --- a/core/src/test/java/org/apache/oozie/command/coord/TestCoordJobsXCommand.java +++ b/core/src/test/java/org/apache/oozie/command/coord/TestCoordJobsXCommand.java @@ -57,6 +57,10 @@ public class TestCoordJobsXCommand extends XDataTestCase { _testGetJobsForAppName(); _testGetJobInfoForUser(); _testGetJobsForUserAndStatus(); + addRecordToCoordJobTable(CoordinatorJob.Status.RUNNING, false, false); + addRecordToCoordJobTable(CoordinatorJob.Status.RUNNING, false, false); + addRecordToCoordJobTable(CoordinatorJob.Status.RUNNING, false, false); + _testGetJobCount(); } private void _testGetJobsForStatus() throws Exception { @@ -123,4 +127,44 @@ public class TestCoordJobsXCommand extends XDataTestCase { assertEquals(ret.getCoordJobs().size(), 2); } + private void _testGetJobCount() throws Exception { + + // With no Filter and different offset/len + Map<String, List<String>> filter = new HashMap<String, List<String>>(); + CoordJobsXCommand coordsGetCmd = new CoordJobsXCommand(filter, 1, 1); + CoordinatorJobInfo ret = coordsGetCmd.call(); + assertNotNull(ret); + assertEquals(ret.getTotal(), 6); + + coordsGetCmd = new CoordJobsXCommand(filter, 3, 6); + ret = coordsGetCmd.call(); + assertNotNull(ret); + assertEquals(ret.getTotal(), 6); + + coordsGetCmd = new CoordJobsXCommand(filter, 5, 20); + ret = coordsGetCmd.call(); + assertNotNull(ret); + assertEquals(ret.getTotal(), 6); + + // With User and status + List<String> list1 = new ArrayList<String>(); + list1.add(getTestUser()); + filter.put(OozieClient.FILTER_USER, list1); + + List<String> list2 = new ArrayList<String>(); + list2.add("RUNNING"); + filter.put(OozieClient.FILTER_STATUS, list2); + + coordsGetCmd = new CoordJobsXCommand(filter, 1, 20); + ret = coordsGetCmd.call(); + assertNotNull(ret); + assertEquals(ret.getTotal(), 4); + + coordsGetCmd = new CoordJobsXCommand(filter, 2, 1); + ret = coordsGetCmd.call(); + assertNotNull(ret); + assertEquals(ret.getTotal(), 4); + + } + } http://git-wip-us.apache.org/repos/asf/oozie/blob/3a6fe570/core/src/test/java/org/apache/oozie/coord/TestCoordUtils.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/oozie/coord/TestCoordUtils.java b/core/src/test/java/org/apache/oozie/coord/TestCoordUtils.java index ae3f18d..56b16c3 100644 --- a/core/src/test/java/org/apache/oozie/coord/TestCoordUtils.java +++ b/core/src/test/java/org/apache/oozie/coord/TestCoordUtils.java @@ -19,14 +19,25 @@ package org.apache.oozie.coord; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; + import org.apache.oozie.CoordinatorActionBean; +import org.apache.oozie.CoordinatorEngine; import org.apache.oozie.CoordinatorJobBean; import org.apache.oozie.client.CoordinatorAction; import org.apache.oozie.client.CoordinatorJob; +import org.apache.oozie.client.OozieClient; import org.apache.oozie.local.LocalOozie; +import org.apache.oozie.service.JPAService; import org.apache.oozie.service.Services; import org.apache.oozie.test.XDataTestCase; +import org.apache.oozie.util.Pair; + +import javax.persistence.EntityManager; +import javax.persistence.Query; public class TestCoordUtils extends XDataTestCase{ private Services services; @@ -103,4 +114,30 @@ public class TestCoordUtils extends XDataTestCase{ assertEquals(2, coordActions.size()); } + + public void testGetWhereClause() throws Exception{ + Map<Pair<String, CoordinatorEngine.FILTER_COMPARATORS>, List<Object>> + filterMap = new HashMap<Pair<String, CoordinatorEngine.FILTER_COMPARATORS>, List<Object>>(); + final Pair<String, CoordinatorEngine.FILTER_COMPARATORS> STATUS_FILTER = + Pair.of(OozieClient.FILTER_STATUS, CoordinatorEngine.FILTER_COMPARATORS.EQUALS); + List<Object> positiveFilter = new ArrayList<Object>(); + positiveFilter.add("RUNNING"); + positiveFilter.add("KILLED"); + filterMap.put(STATUS_FILTER, positiveFilter); + + JPAService jpaService = Services.get().get(JPAService.class); + EntityManager em = jpaService.getEntityManager(); + + Query q = em.createNamedQuery("GET_COORD_ACTIONS_COUNT_BY_JOBID"); + String query = q.toString(); + StringBuilder sbTotal = new StringBuilder(query); + // Get the 'where' clause for status filters + StringBuilder statusClause = new StringBuilder(); + Map<String, Object> params = CoordUtils.getWhereClause(statusClause, filterMap); + sbTotal.insert(sbTotal.length(), statusClause); + + assertTrue(sbTotal.toString().contains("and a.statusStr IN (:p1, :p2)")); + assertEquals(params.get("p1"), "RUNNING"); + assertEquals(params.get("p2"), "KILLED"); + } } http://git-wip-us.apache.org/repos/asf/oozie/blob/3a6fe570/core/src/test/java/org/apache/oozie/executor/jpa/TestCoordActionsCountForJobIdJPAExecutor.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/oozie/executor/jpa/TestCoordActionsCountForJobIdJPAExecutor.java b/core/src/test/java/org/apache/oozie/executor/jpa/TestCoordActionsCountForJobIdJPAExecutor.java new file mode 100644 index 0000000..84a819d --- /dev/null +++ b/core/src/test/java/org/apache/oozie/executor/jpa/TestCoordActionsCountForJobIdJPAExecutor.java @@ -0,0 +1,106 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.oozie.executor.jpa; + +import org.apache.oozie.CoordinatorActionBean; +import org.apache.oozie.CoordinatorEngine; +import org.apache.oozie.CoordinatorJobBean; +import org.apache.oozie.client.CoordinatorAction; +import org.apache.oozie.client.CoordinatorJob; +import org.apache.oozie.client.OozieClient; +import org.apache.oozie.service.JPAService; +import org.apache.oozie.service.Services; +import org.apache.oozie.test.XDataTestCase; +import org.apache.oozie.util.DateUtils; +import org.apache.oozie.util.Pair; +import org.junit.Assert; + +import java.sql.Timestamp; +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.HashMap; + + +public class TestCoordActionsCountForJobIdJPAExecutor extends XDataTestCase { + private static final Pair<String, CoordinatorEngine.FILTER_COMPARATORS> POSITIVE_STATUS_FILTER = + Pair.of(OozieClient.FILTER_STATUS, CoordinatorEngine.FILTER_COMPARATORS.EQUALS); + private static final Pair<String, CoordinatorEngine.FILTER_COMPARATORS> NEGATIVE_STATUS_FILTER = + Pair.of(OozieClient.FILTER_STATUS, CoordinatorEngine.FILTER_COMPARATORS.NOT_EQUALS); + Services services; + + @Override + protected void setUp() throws Exception { + super.setUp(); + services = new Services(); + services.init(); + } + + @Override + protected void tearDown() throws Exception { + services.destroy(); + super.tearDown(); + } + + private Timestamp getSqlTime(String str) throws ParseException { + return new Timestamp(DateUtils.parseDateUTC(str).getTime()); + } + + private List<Object> getList(Object... objs) { + List<Object> list = new ArrayList<Object>(); + for (Object o : objs) { + list.add(o); + } + return list; + } + + public void testGetActionsCount() throws Exception { + CoordinatorJobBean job = addRecordToCoordJobTable(CoordinatorJob.Status.RUNNING, false, false); + String timeStr[] = {"2009-02-01T00:00Z", "2009-02-01T05:00Z", "2009-02-01T10:00Z", "2009-02-01T15:00Z"}; + Date ntime[] = {getSqlTime(timeStr[0]), getSqlTime(timeStr[1]), getSqlTime(timeStr[2]), getSqlTime(timeStr[3])}; + + List<String> actionIds = new ArrayList<String>(timeStr.length); + int startAction = 5; + for (Date time : ntime) { + CoordinatorActionBean action = addRecordToCoordActionTable(job.getId(), startAction++, + CoordinatorAction.Status.WAITING, "coord-action-get.xml", 0, time); + actionIds.add(action.getId()); + } + JPAService jpaService = Services.get().get(JPAService.class); + assertNotNull(jpaService); + + + // Without Filters + Map<Pair<String, CoordinatorEngine.FILTER_COMPARATORS>, List<Object>> filterMap = + new HashMap<Pair<String, CoordinatorEngine.FILTER_COMPARATORS>, List<Object>>(); + CoordActionsCountForJobIdJPAExecutor actionGetCountCmd = new CoordActionsCountForJobIdJPAExecutor( + job.getId(), filterMap); + int actionCount = jpaService.execute(actionGetCountCmd); + Assert.assertEquals(4, actionCount); + + // With Filter + filterMap.put(Pair.of(OozieClient.FILTER_NOMINAL_TIME, CoordinatorEngine.FILTER_COMPARATORS.GREATER_EQUAL), + getList(ntime[2])); + actionGetCountCmd = new CoordActionsCountForJobIdJPAExecutor(job.getId(), filterMap); + actionCount = jpaService.execute(actionGetCountCmd); + Assert.assertEquals(2, actionCount); + } +} http://git-wip-us.apache.org/repos/asf/oozie/blob/3a6fe570/release-log.txt ---------------------------------------------------------------------- diff --git a/release-log.txt b/release-log.txt index e525c59..227ef42 100644 --- a/release-log.txt +++ b/release-log.txt @@ -1,5 +1,6 @@ -- Oozie 4.3.0 release (trunk - unreleased) +OOZIE-2266 Fix 'total' actions returned in coordinator job info (sai-krish via rkanter) OOZIE-2264 Fix coord:offset(n,"DAY") to resolve correct data set(kailongs via puru) OOZIE-2178 fix javadoc to compile on JDK8 (rkanter) OOZIE-2268 Update ActiveMQ version for security and other fixes (rkanter)
