Repository: falcon Updated Branches: refs/heads/master 78bb79617 -> 6d73fad44
FALCON-1961 Should return error if an extension job doesn't exist for delete/suspend/resume/schedule operations Author: yzheng-hortonworks <[email protected]> Reviewers: "Sowmya Ramesh <[email protected]>, Balu Vellanki <[email protected]>" Closes #144 from yzheng-hortonworks/FALCON-1961 Project: http://git-wip-us.apache.org/repos/asf/falcon/repo Commit: http://git-wip-us.apache.org/repos/asf/falcon/commit/6d73fad4 Tree: http://git-wip-us.apache.org/repos/asf/falcon/tree/6d73fad4 Diff: http://git-wip-us.apache.org/repos/asf/falcon/diff/6d73fad4 Branch: refs/heads/master Commit: 6d73fad44c67b3bb013c37a2939fa00aacd12668 Parents: 78bb796 Author: Ying Zheng <[email protected]> Authored: Wed May 18 15:45:41 2016 -0700 Committer: Sowmya Ramesh <[email protected]> Committed: Wed May 18 15:45:41 2016 -0700 ---------------------------------------------------------------------- .../resource/extensions/ExtensionManager.java | 28 ++++++++++++++++++++ 1 file changed, 28 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/falcon/blob/6d73fad4/prism/src/main/java/org/apache/falcon/resource/extensions/ExtensionManager.java ---------------------------------------------------------------------- diff --git a/prism/src/main/java/org/apache/falcon/resource/extensions/ExtensionManager.java b/prism/src/main/java/org/apache/falcon/resource/extensions/ExtensionManager.java index c9be472..eda8697 100644 --- a/prism/src/main/java/org/apache/falcon/resource/extensions/ExtensionManager.java +++ b/prism/src/main/java/org/apache/falcon/resource/extensions/ExtensionManager.java @@ -107,6 +107,9 @@ public class ExtensionManager extends AbstractSchedulableEntityManager { try { // get filtered entities List<Entity> entities = getEntityList("", "", "", TAG_PREFIX_EXTENSION_NAME + extensionName, "", doAsUser); + if (entities.isEmpty()) { + return new ExtensionJobList(0); + } // group entities by extension job name Map<String, List<Entity>> groupedEntities = groupEntitiesByJob(entities); @@ -155,6 +158,10 @@ public class ExtensionManager extends AbstractSchedulableEntityManager { resultsPerPage = resultsPerPage == null ? getDefaultResultsPerPage() : resultsPerPage; try { List<Entity> entities = getEntityList("", "", "", TAG_PREFIX_EXTENSION_JOB + jobName, "", doAsUser); + if (entities.isEmpty()) { + return new ExtensionInstanceList(0); + } + HashSet<String> fieldSet = new HashSet<>(Arrays.asList(fields.toUpperCase().split(","))); ExtensionInstanceList instances = new ExtensionInstanceList(entities.size()); for (Entity entity : entities) { @@ -179,6 +186,11 @@ public class ExtensionManager extends AbstractSchedulableEntityManager { @DefaultValue("") @QueryParam("doAs") String doAsUser) { try { List<Entity> entities = getEntityList("", "", "", TAG_PREFIX_EXTENSION_JOB + jobName, "", doAsUser); + if (entities.isEmpty()) { + // return failure if the extension job doesn't exist + return new APIResult(APIResult.Status.FAILED, "Extension job " + jobName + " doesn't exist."); + } + for (Entity entity : entities) { scheduleInternal(entity.getEntityType().name(), entity.getName(), null, null); } @@ -197,6 +209,11 @@ public class ExtensionManager extends AbstractSchedulableEntityManager { @DefaultValue("") @QueryParam("doAs") String doAsUser) { try { List<Entity> entities = getEntityList("", "", "", TAG_PREFIX_EXTENSION_JOB + jobName, "", doAsUser); + if (entities.isEmpty()) { + // return failure if the extension job doesn't exist + return new APIResult(APIResult.Status.FAILED, "Extension job " + jobName + " doesn't exist."); + } + for (Entity entity : entities) { if (entity.getEntityType().isSchedulable()) { if (getWorkflowEngine(entity).isActive(entity)) { @@ -219,6 +236,11 @@ public class ExtensionManager extends AbstractSchedulableEntityManager { @DefaultValue("") @QueryParam("doAs") String doAsUser) { try { List<Entity> entities = getEntityList("", "", "", TAG_PREFIX_EXTENSION_JOB + jobName, "", doAsUser); + if (entities.isEmpty()) { + // return failure if the extension job doesn't exist + return new APIResult(APIResult.Status.FAILED, "Extension job " + jobName + " doesn't exist."); + } + for (Entity entity : entities) { if (entity.getEntityType().isSchedulable()) { if (getWorkflowEngine(entity).isSuspended(entity)) { @@ -241,6 +263,12 @@ public class ExtensionManager extends AbstractSchedulableEntityManager { @DefaultValue("") @QueryParam("doAs") String doAsUser) { try { List<Entity> entities = getEntityList("", "", "", TAG_PREFIX_EXTENSION_JOB + jobName, "", doAsUser); + if (entities.isEmpty()) { + // return failure if the extension job doesn't exist + return new APIResult(APIResult.Status.SUCCEEDED, + "Extension job " + jobName + " doesn't exist. Nothing to delete."); + } + for (Entity entity : entities) { // TODO(yzheng): need to remember the entity dependency graph for clean ordered removal canRemove(entity);
