Repository: airavata Updated Branches: refs/heads/develop 9e4dccffc -> bb5be4b5e
Only allow terminate operation for running experiments. Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/bb5be4b5 Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/bb5be4b5 Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/bb5be4b5 Branch: refs/heads/develop Commit: bb5be4b5edf91eaf7d54c4564e9615e3bd5021b9 Parents: 9e4dccf Author: Shameera Rathnayaka <[email protected]> Authored: Mon Nov 23 15:03:49 2015 -0500 Committer: Shameera Rathnayaka <[email protected]> Committed: Mon Nov 23 15:03:49 2015 -0500 ---------------------------------------------------------------------- .../server/OrchestratorServerHandler.java | 38 ++++++++++++-------- 1 file changed, 24 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/bb5be4b5/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java ---------------------------------------------------------------------- diff --git a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java index c1e9d65..94e804d 100644 --- a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java +++ b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java @@ -345,20 +345,30 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface { } private boolean validateStatesAndCancel(String experimentId, String gatewayId) throws Exception { - String expCancelNodePath = ZKPaths.makePath(ZKPaths.makePath(ZkConstants.ZOOKEEPER_EXPERIMENT_NODE, - experimentId), ZkConstants.ZOOKEEPER_CANCEL_LISTENER_NODE); - Stat stat = curatorClient.checkExists().forPath(expCancelNodePath); - if (stat != null) { - curatorClient.setData().withVersion(-1).forPath(expCancelNodePath, ZkConstants.ZOOKEEPER_CANCEL_REQEUST - .getBytes()); - ExperimentStatus status = new ExperimentStatus(ExperimentState.CANCELING); - status.setReason("Experiment cancel request processed"); - status.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime()); - OrchestratorUtils.updageExperimentStatus(experimentId, status); - log.info("expId : " + experimentId + " :- Experiment status updated to " + status.getState()); - return true; - } - return false; + ExperimentStatus experimentStatus = OrchestratorUtils.getExperimentStatus(experimentId); + switch (experimentStatus.getState()) { + case COMPLETED: case CANCELED: case FAILED: case CANCELING: + log.warn("Can't terminate already {} experiment", experimentStatus.getState().name()); + return false; + case CREATED: + log.warn("Experiment termination is only allowed for launched experiments."); + return false; + default: + String expCancelNodePath = ZKPaths.makePath(ZKPaths.makePath(ZkConstants.ZOOKEEPER_EXPERIMENT_NODE, + experimentId), ZkConstants.ZOOKEEPER_CANCEL_LISTENER_NODE); + Stat stat = curatorClient.checkExists().forPath(expCancelNodePath); + if (stat != null) { + curatorClient.setData().withVersion(-1).forPath(expCancelNodePath, ZkConstants.ZOOKEEPER_CANCEL_REQEUST + .getBytes()); + ExperimentStatus status = new ExperimentStatus(ExperimentState.CANCELING); + status.setReason("Experiment cancel request processed"); + status.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime()); + OrchestratorUtils.updageExperimentStatus(experimentId, status); + log.info("expId : " + experimentId + " :- Experiment status updated to " + status.getState()); + return true; + } + return false; + } } private void launchWorkflowExperiment(String experimentId, String airavataCredStoreToken) throws TException {
