Repository: oozie Updated Branches: refs/heads/master 5508ec7a6 -> fca69e955
OOZIE-1671 add an option to limit # of coordinator actions for log retrieval (ryota) Project: http://git-wip-us.apache.org/repos/asf/oozie/repo Commit: http://git-wip-us.apache.org/repos/asf/oozie/commit/fca69e95 Tree: http://git-wip-us.apache.org/repos/asf/oozie/tree/fca69e95 Diff: http://git-wip-us.apache.org/repos/asf/oozie/diff/fca69e95 Branch: refs/heads/master Commit: fca69e95571173d93a98d1b910ad2f808fb111a3 Parents: 5508ec7 Author: egashira <[email protected]> Authored: Fri Feb 21 10:20:30 2014 -0800 Committer: egashira <[email protected]> Committed: Fri Feb 21 10:20:30 2014 -0800 ---------------------------------------------------------------------- .../java/org/apache/oozie/CoordinatorEngine.java | 18 ++++++++++++++++-- .../oozie/TestCoordinatorEngineStreamLog.java | 18 ++++++++++++++++++ release-log.txt | 1 + webapp/src/main/webapp/oozie-console.js | 3 ++- 4 files changed, 37 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/oozie/blob/fca69e95/core/src/main/java/org/apache/oozie/CoordinatorEngine.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/oozie/CoordinatorEngine.java b/core/src/main/java/org/apache/oozie/CoordinatorEngine.java index e7384f1..315a330 100644 --- a/core/src/main/java/org/apache/oozie/CoordinatorEngine.java +++ b/core/src/main/java/org/apache/oozie/CoordinatorEngine.java @@ -61,6 +61,9 @@ import com.google.common.annotations.VisibleForTesting; public class CoordinatorEngine extends BaseEngine { private static XLog LOG = XLog.getLog(CoordinatorEngine.class); + public final static String COORD_ACTIONS_LOG_MAX_COUNT = "oozie.coord.actions.log.max.count"; + private final static int COORD_ACTIONS_LOG_MAX_COUNT_DEFAULT = 50; + private int maxNumActionsForLog; /** * Create a system Coordinator engine, with no user and no group. @@ -72,6 +75,8 @@ public class CoordinatorEngine extends BaseEngine { else { LOG.debug("Oozie CoordinatorEngine is using XCommands."); } + maxNumActionsForLog = Services.get().getConf() + .getInt(COORD_ACTIONS_LOG_MAX_COUNT, COORD_ACTIONS_LOG_MAX_COUNT_DEFAULT); } /** @@ -334,6 +339,11 @@ public class CoordinatorEngine extends BaseEngine { } } + if (actionSet.size() >= maxNumActionsForLog) { + throw new CommandException(ErrorCode.E0302, + "Retrieving log of too many coordinator actions. Max count is " + + maxNumActionsForLog + " actions"); + } Iterator<String> actionsIterator = actionSet.iterator(); StringBuilder orSeparatedActions = new StringBuilder(""); boolean orRequired = false; @@ -379,6 +389,11 @@ public class CoordinatorEngine extends BaseEngine { catch (XException xe) { throw new CommandException(ErrorCode.E0302, "Error in date range for coordinator actions", xe); } + if(coordActionIdList.size() >= maxNumActionsForLog) { + throw new CommandException(ErrorCode.E0302, + "Retrieving log of too many coordinator actions. Max count is " + + maxNumActionsForLog + " actions"); + } StringBuilder orSeparatedActions = new StringBuilder(""); boolean orRequired = false; for (String coordActionId : coordActionIdList) { @@ -527,7 +542,6 @@ public class CoordinatorEngine extends BaseEngine { } } - // Parses the filter string (e.g status=RUNNING;status=WAITING) and returns a list of status values private List<String> parseStatusFilter(String filter) throws CoordinatorEngineException { List<String> filterList = new ArrayList<String>(); @@ -548,7 +562,7 @@ public class CoordinatorEngine extends BaseEngine { CoordinatorAction.Status.valueOf(statusValue); } catch (IllegalArgumentException ex) { StringBuilder validStatusList = new StringBuilder(); - for (CoordinatorAction.Status status: CoordinatorAction.Status.values()){ + for (CoordinatorAction.Status status : CoordinatorAction.Status.values()){ validStatusList.append(status.toString()+" "); } // Check for incorrect status value http://git-wip-us.apache.org/repos/asf/oozie/blob/fca69e95/core/src/test/java/org/apache/oozie/TestCoordinatorEngineStreamLog.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/oozie/TestCoordinatorEngineStreamLog.java b/core/src/test/java/org/apache/oozie/TestCoordinatorEngineStreamLog.java index dff46ef..5a1cb9b 100644 --- a/core/src/test/java/org/apache/oozie/TestCoordinatorEngineStreamLog.java +++ b/core/src/test/java/org/apache/oozie/TestCoordinatorEngineStreamLog.java @@ -212,6 +212,24 @@ public class TestCoordinatorEngineStreamLog extends XFsTestCase { assertEquals(list.get(1).getCreatedTime().toString(), service.startTime.toString()); assertEquals(list.get(5).getLastModifiedTime().toString(), service.endTime.toString()); + // Test 11, testing -scope option with Max Count + Services.get().getConf().setInt(CoordinatorEngine.COORD_ACTIONS_LOG_MAX_COUNT, 1); + ce = createCoordinatorEngine(); + try { + ce.streamLog(jobId, "1-3", RestConstants.JOB_LOG_ACTION, new StringWriter(), new HashMap<String, String[]>()); + } catch (XException e){ + assertEquals(e.getErrorCode(), ErrorCode.E0302); + assertTrue(e.getMessage().indexOf("Retrieving log of too many coordinator actions") != -1); + } + + // Test 12, testing -date option with Max Count + try { + ce.streamLog(jobId, DateUtils.formatDateOozieTZ(createdDate) + "::" + DateUtils.formatDateOozieTZ(endDate), + RestConstants.JOB_LOG_DATE, new StringWriter(),new HashMap<String, String[]>()); + } catch (XException e) { + assertEquals(e.getErrorCode(), ErrorCode.E0302); + assertTrue(e.getMessage().indexOf("Retrieving log of too many coordinator actions") != -1); + } } private String runJobsImpl(final CoordinatorEngine ce, int count) throws Exception { http://git-wip-us.apache.org/repos/asf/oozie/blob/fca69e95/release-log.txt ---------------------------------------------------------------------- diff --git a/release-log.txt b/release-log.txt index 40917d2..3f8b9bb 100644 --- a/release-log.txt +++ b/release-log.txt @@ -1,5 +1,6 @@ -- Oozie 4.1.0 release (trunk - unreleased) +OOZIE-1671 add an option to limit # of coordinator actions for log retrieval (ryota) OOZIE-1629 EL function in <timeout> is not evaluated properly (ryota) OOZIE-1618 dryrun should check variable substitution in workflow.xml (bowenzhangusa via rkanter) OOZIE-1681 Sqoop sharelib has no hsqldb jar version (Ostap via rkanter) http://git-wip-us.apache.org/repos/asf/oozie/blob/fca69e95/webapp/src/main/webapp/oozie-console.js ---------------------------------------------------------------------- diff --git a/webapp/src/main/webapp/oozie-console.js b/webapp/src/main/webapp/oozie-console.js index a6c343e..f021ffe 100644 --- a/webapp/src/main/webapp/oozie-console.js +++ b/webapp/src/main/webapp/oozie-console.js @@ -70,7 +70,8 @@ function getLogs(url, textArea, shouldParseResponse, errorMsg) { } if (xhr.status != 200 && xhr.status != 0) { - textArea.getEl().dom.value = "Error :\n" + xhr.responseText; + var errorText = xhr.getResponseHeader('oozie-error-message'); + textArea.getEl().dom.value = "Error :\n" + (errorText ? errorText : xhr.responseText); } } catch (e) { }
