Skip to main content

Statuses and History

Introduction

This document helps you understand the statuses and history of nodes in Conductor's workflow graphs. This is a conceptual overview. To see how these concepts are represented in the desktop app's monitor interface, please refer to the Working with nodes howto.

Statuses

You'll encounter 7 statuses that have meaning for the evaluation of nodes in a workflow.

StatusDescription
OpenopenAn open node will transition to running as soon as all its inputs are ready.
HoldingholdingA holding node will not transition to running, even when its inputs are ready. You must manually unhold it.
RunningrunningA running node is working. It could be finding or provisioning instances, executing a render, copying files, etc.
SucceededsucceededA succeeded node has completed successfully. Downstream nodes may now run.
SkippedskippedA skipped node did not complete successfully because you manually skipped it. However, downstream nodes may still run.
FailedfailedA failed node has not completed successfully. Downstream nodes will not run.
CanceledcanceledA canceled node was stopped by you. Downstream nodes will not run.

Transitions

Statuses

The diagram above shows how transitions change a node's status. They are triggered manually by you, or procedurally by the workflow engine.

  • Manual transitions are shown as orange arrows.
  • Procedural transitions are green arrows.

It's helpful to group transitions hierarchically to make reasoning about them easier. The hierarchy of SuperStates is as follows:

  • Start Statuses
    • open
    • holding
  • Retryable Statuses
    • running
    • Final Statuses
      • Ready Statuses
        • succeeded
        • skipped
      • Bad Statuses
        • failed
        • canceled
TransitionDescription
holdYou can hold an open node. It will go to holding.
unholdYou can open a holding node.
skipYou can skip any node that is not in one of the ready statuses. Skipped is a ready status, which means that downstream nodes may now run.
cancelYou can cancel a running node.
You cannot cancel nodes in start statuses, since it's functionally equivalent to holding.
runAn open node will transition procedurally to running as soon as all its inputs are ready.
succeedA running node will transition to succeeded if it completes without failing and without being canceled or skipped by you.
failA node that experienced an error will transition to failed.

Updates

When you edit the parameters of a node, you are performing an update. It's useful to understand that there are two types of updates:

  • Update from a start status (open, holding).
  • Update from a retryable status (running, skipped, failed, canceled, succeeded).

Update from a start status

Since a node with a start status has not run, your update simply changes the node parameters so that when it does run, it will do so with the new parameters.

Update from a retryable status

If you update a node that is already running, or is in a final status, you'll be performing a retry. If the node is running it is canceled first. Then the node parameters are updated and the node is put back in the start status. If any downstream nodes are in a retryable state, they will also be retried.

Update options

Since any update results in the node returning to a start status, you have the convenience of also specifying which start status the node should transition to. You can either:

  • Update: Transitions to the node's status at the time it was submitted.
  • Update with holding: Force transition to holding.
  • Update with open: Force transition to open.

Simple retry

You can think of a simple retry as an update with no parameter edits.

Allowable actions

The following table shows which actions you can perform for each status.

StatusManual TransitionsProcedural Transitions
OpenopenUpdate Hold SkipRun
HoldingholdingUpdate Open Skip
RunningrunningUpdate Skip CancelSucceed Fail
SkippedskippedUpdate Cancel
FailedfailedUpdate Skip
CanceledcanceledUpdate Skip
CompletedsucceededUpdate Cancel

Any time you update a node in the edit node dialog, you'll have the option to also specify holding or open.

History

Base and Current Configurations

You can edit a node's parameters before it runs and you can revert to the initial configuration. To achieve this efficiently, we maintain the node's base configuration at the time of submission then subsequent edits are represented as a patch with respect to the base configuration.

  • The base configuration is the configuration of the node at the time it was submitted.
  • The current configuration is the configuration of the node at the time it runs.
  • Every node has a base configuration and a current configuration.
ConfigurationAliasMutabilityDescription
currentcurrentmutableThe configuration of the node when it runs
baseinitimmutableThe configuration of parameters at submission time

Example:

Here is the base configuration for an email node:

{
  "addresses": [
    "info@conductorio.com",
    "test@conductorio.com"
  ],
  "subject": "Congratulations! Completed: ${workflow-id}",
  "body": "The job with ID ${workflow-id} has been successfully completed."
}

And here is the patch for the current configuration:

{}

If you now edit the node, the current configuration is updated with the new parameters. The base configuration remains unchanged. By changing the subject the current patch becomes:

{
  "subject": "Hello! ${workflow-id} is finished"
}

The system merges it with the base configuration to form your complete current configuration.

When you decide to revert to the initial configuration, your current configuration is replaced with base configuration. Since your current configuration is a patch with respect to the base configuration, the result is that your current patch becomes empty again.

Snapshots

When you retry a node that is in a retryable status, with or without edits, the node's history is updated with a snapshot of your current configuration.

Unlike nodes in start statuses, you should consider a node that is in a retryable status to be effectively frozen and historically interesting. To recap, that means when you have a node that has started running, or reached a final status, it will be snapshotted if you retry it. If you don't retry it, then your current configuration represents the node's state, and therefore does not need to be snapshotted.

ConfigurationAliasMutabilityDescription
currentcurrentmutableThe configuration of the node when it runs
snapshotsnap(2)immutableA snapshot of the current configuration when the node was retried
snapshotsnap(1)immutableA snapshot of the current configuration when the node was retried
baseinitimmutableThe configuration of parameters at submission time

Cascades

When you retry a node that is in a retryable status, downstream nodes in a retryable status are also retried in a cascading fashion.

Example:

If a Nuke task is downstream from a render task, and the render task is retried, then the Nuke task will be issued a retry too. A snapshot for the Nuke task is created, and the Nuke task will will be set back to it's start status.

This keeps the graph integrity in tact. It means you'll never see an open, or holding node upstream from a node that has started running. The only statuses that can be upstream of a node that has started, are skipped and succeeded.

Cascading retries

Conclusion

Understanding node statuses, transitions, and history is crucial for effectively managing advanced workflows in Conductor. Statuses provide clear visibility into the progress of your workflow, while snapshots keep a detailed record of configuration changes for every node. This allows you to examine the past node configurations to see how those changes affected the workflow, and to replay them if you'd like.

For a practical demonstration of how this history is displayed and used in the application, please refer to the Working with nodes howto, which shows how these concepts are represented in the desktop app's monitor interface.