From 7c39ae009581eefc60cb21521bb2189bbdb948cb Mon Sep 17 00:00:00 2001 From: Simon Walker Date: Fri, 9 May 2025 16:29:14 +0100 Subject: [PATCH] Stack deploy errors stop deploy process --- .../services/cloudformation/v2/provider.py | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/localstack-core/localstack/services/cloudformation/v2/provider.py b/localstack-core/localstack/services/cloudformation/v2/provider.py index f2a8afe509f19..a738adf6f29cc 100644 --- a/localstack-core/localstack/services/cloudformation/v2/provider.py +++ b/localstack-core/localstack/services/cloudformation/v2/provider.py @@ -271,15 +271,26 @@ def execute_change_set( ) def _run(*args): - result = change_set_executor.execute() - new_stack_status = StackStatus.UPDATE_COMPLETE - if change_set.change_set_type == ChangeSetType.CREATE: - new_stack_status = StackStatus.CREATE_COMPLETE - change_set.stack.set_stack_status(new_stack_status) - change_set.set_execution_status(ExecutionStatus.EXECUTE_COMPLETE) - change_set.stack.resolved_resources = result.resources - change_set.stack.resolved_parameters = result.parameters - change_set.stack.resolved_outputs = result.outputs + try: + result = change_set_executor.execute() + new_stack_status = StackStatus.UPDATE_COMPLETE + if change_set.change_set_type == ChangeSetType.CREATE: + new_stack_status = StackStatus.CREATE_COMPLETE + change_set.stack.set_stack_status(new_stack_status) + change_set.set_execution_status(ExecutionStatus.EXECUTE_COMPLETE) + change_set.stack.resolved_resources = result.resources + change_set.stack.resolved_parameters = result.parameters + change_set.stack.resolved_outputs = result.outputs + except Exception as e: + LOG.error( + "Execute change set failed: %s", e, exc_info=LOG.isEnabledFor(logging.WARNING) + ) + new_stack_status = StackStatus.UPDATE_FAILED + if change_set.change_set_type == ChangeSetType.CREATE: + new_stack_status = StackStatus.CREATE_FAILED + + change_set.stack.set_stack_status(new_stack_status) + change_set.set_execution_status(ExecutionStatus.EXECUTE_FAILED) start_worker_thread(_run)