Xvc Pipelines State Machine

Xvc pipelines use a state machine to track the progress of each step. Each step has a state that is updated as the pipeline is executed.

RunNever
RunConditional
DependencyStepsRunning
DependencyStepsFinishedSuccessfully
DependencyStepsFinishedBroken
DependencyStepsFinishedBrokenIgnored
MissingDependenciesIgnored
HasMissingDependencies
NoMissingDependencies
MissingOutputsIgnored
NoMissingOutputs
HasMissingOutputs
TimestampsIgnored
HasNoNewerDependencies
HasNewerDependencies
ContentDigestIgnored
ContentDigestNotChanged
ContentDigestChanged
CompletedWithoutRunningStep
ProcessPoolFull
StartProcess
CannotStartProcess
WaitProcess
ProcessTimeout
ProcessCompletedSuccessfully
ProcessReturnedNonZero
HasBroken
HasDone
Begin
DoneWithoutRunning
WaitingDependencySteps
CheckingMissingDependencies
Broken
CheckingMissingOutputs
CheckingTimestamps
WaitingToRun
CheckingDependencyContentDigest
Done
Running

A step starts in the Begin state. It must wait for all its dependency steps if --when is set to by_dependencies (the default) in xvc pipeline step new or xvc pipeline step update. If this option is set to never, the step will never run and will move to the DoneWithoutRunning state just after begin. If this option is set to always, the step will run regardless of the changes in the dependencies and will move to the WaitingDependencySteps even if dependencies are missing, broken, or have not changed.

If --when option is set to by_dependencies, the steps check the following conditions before running:

  • All dependency steps must be in the Done state.
  • There should be no missing dependency files.
  • There should be no broken dependency processes.
  • Dependency files should be newer, or the content digest should be different from the step outputs.

If any of these conditions are met, the step will move to the WaitingDependencySteps state.