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);

Reply via email to