You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ariatosca.apache.org by ra...@apache.org on 2017/03/30 16:31:55 UTC
incubator-ariatosca git commit: fixed issues with cancel-execution
Repository: incubator-ariatosca
Updated Branches:
refs/heads/ARIA-48-aria-cli 39634b788 -> b0a408f23
fixed issues with cancel-execution
Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/b0a408f2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/b0a408f2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/b0a408f2
Branch: refs/heads/ARIA-48-aria-cli
Commit: b0a408f2397924e5752e9ef84daf4f1958e0dfb3
Parents: 39634b7
Author: Ran Ziv <ra...@gigaspaces.com>
Authored: Thu Mar 30 19:30:39 2017 +0300
Committer: Ran Ziv <ra...@gigaspaces.com>
Committed: Thu Mar 30 19:30:39 2017 +0300
----------------------------------------------------------------------
aria/cli/commands/executions.py | 25 +++++++++++++++----------
1 file changed, 15 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/b0a408f2/aria/cli/commands/executions.py
----------------------------------------------------------------------
diff --git a/aria/cli/commands/executions.py b/aria/cli/commands/executions.py
index 74f2e25..d978612 100644
--- a/aria/cli/commands/executions.py
+++ b/aria/cli/commands/executions.py
@@ -17,12 +17,13 @@ import json
import time
from .. import utils
-from ...utils import formatting
from ..table import print_data
from ..cli import aria, helptexts
from ..exceptions import AriaCliError
+from ...modeling.models import Execution
from ...storage.exceptions import StorageError
from ...orchestrator.workflow_runner import WorkflowRunner
+from ...utils import formatting
from ...utils import threading
EXECUTION_COLUMNS = ['id', 'workflow_name', 'status', 'service_name',
@@ -138,29 +139,33 @@ def start(workflow_name,
task_max_attempts, task_retry_interval)
execution_thread_name = '{0}_{1}'.format(service_name, workflow_name)
- execution_thread = threading.ExcThread(target=workflow_runner.execute,
- name=execution_thread_name)
+ execution_thread = threading.ExceptionThread(target=workflow_runner.execute,
+ name=execution_thread_name)
+ execution_thread.daemon = True # allows force-cancel to exit immediately
logger.info('Starting execution. Press Ctrl+C cancel')
+ execution_thread.start()
try:
- execution_thread.start()
- execution_thread.join()
+ while execution_thread.is_alive():
+ # using join without a timeout blocks and ignores KeyboardInterrupt
+ execution_thread.join(1)
except KeyboardInterrupt:
_cancel_execution(workflow_runner, execution_thread, logger)
execution_thread.raise_error_if_exists()
- execution = workflow_runner.execution #TODO refresh?
+ execution = workflow_runner.execution
logger.info('Execution has ended with "{0}" status'.format(execution.status))
- #TODO print error if exists
+ if execution.status == Execution.FAILED:
+ logger.info('Execution error:\n{0}'.format(execution.error))
def _cancel_execution(workflow_runner, execution_thread, logger):
logger.info('Cancelling execution. Press Ctrl+C again to force-cancel')
try:
workflow_runner.cancel()
- execution_thread.join()
+ while execution_thread.is_alive():
+ execution_thread.join(1)
except KeyboardInterrupt:
- raise NotImplementedError('Force-cancelling functionality is not yet implemented')
- # logger.info('Force-cancelling execution')
+ logger.info('Force-cancelling execution')
# TODO handle execution (update status etc.) and exit process