Introducing Error-Handling Phase for Enhanced Workflow Resilience

Description: The current workflow model in Morpheus consists of several phases, including Configuration, Price, Pre Provision, Provision, Post Provision, Start Service, Stop Service, Pre Deploy, Deploy, Reconfigure, Teardown, Shutdown, and Startup. While this comprehensive model facilitates a wide range of operations, it currently lacks a dedicated mechanism for handling errors that may occur during any of these phases. The absence of a specific error-handling phase means that users cannot preemptively plan for tasks that should be executed in the event of a failure. This limitation can lead to increased manual intervention, delayed resolution times, and potentially, a higher rate of unsuccessful operations. Introducing an error-handling phase would allow for automated recovery procedures, improving the reliability and efficiency of workflows within the Morpheus platform.

Example/Use case(s): Consider a scenario where a deployment task fails during the “Deploy” phase due to an unforeseen error, such as a configuration mismatch or network issues. In the current workflow model, this failure would require manual intervention to identify, troubleshoot, and correct the issue before attempting to redeploy. With an error-handling phase, users could specify automatic tasks to be executed in response to the failure, such as rolling back changes, sending notifications to administrators, or attempting predefined troubleshooting steps before a manual review is necessitated. This feature would not only minimize downtime but also streamline the process of managing failures, making workflows more resilient and less reliant on immediate human intervention.

2 Likes

Is this handled with release v6.3.4:

Workflows

  • Added “Conditional Workflow” Task type which let’s the user set JavaScript conditional logic to determine which of two Workflows would be run

Essentially you can nest an error handling workflow on your pertinent phases. You will need your tasks to proceed on failure, then you have the conditional check prior result state.

Hey Chris,

Many thanks for the quick reply and for pointing out the great new feature! I’ll have to install it first and try it out. The function is not entirely clear to me from the documentation. Could you possibly provide a small example?

Prompted my team to come up with a small example to help visualize the flow. Standby :slight_smile:

1 Like