Control / flow · All operations
Wait for upstream steps to finish
A variant of Branch or loop
Hold a step until chosen upstream steps or all input rows have finished, to fix the order in which work runs.
Status
- In arcform
Not built yet
arcform does not do this yet; it would live in how a Protocol runs. Its place on the roadmap
What other tools call it
Meridian's classification; an independent blind rating agreed on 95.7% of 324 rows (variant, version 3).
Alteryx Designer (2)
Block Until Doneread 2026-09-27Hold records until upstream finishes, then release to output streams one at a time
Control Containerread 2026-09-27Run a group of tools only on a signal, to set the order of execution in a workflow
Apache Hop (4)
Blocking transformread 2026-09-27Hold all output until the last input row has arrived, optionally passing every row
Blocking until transforms finishread 2026-09-27Wait until named transform copies have finished before passing rows on
Joinread 2026-09-27Wait for parallel branches to finish before continuing
Startread 2026-09-27Entry point of every workflow
Apache NiFi (1)
EnforceOrderread 2026-09-27Enforce the expected order of FlowFiles that belong to the same group
Duckle (1)
Sequence Anchorread 2026-09-25no-op node that ordering links attach to
EasyMorph (2)
Start/finish exclusive accessread 2026-09-27Hold a mutual-exclusion lock on a resource across concurrently running projects
Synchronizeread 2026-09-27Pause this action chain until another table has finished calculating
Pentaho Data Integration (2)
Block this step until steps finishread 2026-09-27Hold this step until selected other steps have finished
Blocking stepread 2026-09-27Hold the flow until every input row has arrived, then pass on only the last row
Background
In parallel computing, a barrier is a synchronisation method at which a group of threads or processes stop until all of the others reach it.[1] Alteryx's Block Until Done tool stops data moving downstream until the last record has been processed by all previous tools.[2]
When to use it
In Alteryx, Block Until Done is used when a workflow reads and writes the same file, to make sure the entire file is read before it is written.[2] Alteryx's Block Until Done tool can slow down execution because it requires a large amount of memory.[2] EasyMorph calculates independent action chains asynchronously, and its Synchronize action is used to enforce a dependency and guarantee a particular execution order.[3] EasyMorph's Synchronize action is typically inserted just before a side-effect action, such as an export, to avoid simultaneous reading and writing of external files.[3] Hold a step only where order matters, such as a write that must follow a read; every hold makes the run wait for its slowest input. (Meridian's view)
The method
A thread barrier keeps track of the number of threads that have entered it, and is lifted once enough threads have entered.[1] Apache Hop's Blocking transform holds back all output until the very last row is received from the previous transform, then sends on the last row or the complete input.[4] With Alteryx's Block Until Done, only one output stream at a time receives the completed dataset, and later streams are blocked until all its records have gone through the first.[2] Before Apache Hop's Join action, a workflow that ran parts in parallel and then continued in sequence had to isolate the parallel parts in a child workflow.[5]
Compared with the alternatives
In the fork–join model, where parallel branches of a program merge again at a join, a join differs from a barrier: threads continue to work after a barrier, while after a join only one thread continues.[6] In dataflow programming, an operation runs as soon as all of its inputs become valid.[7] A hold step earns its place where waiting for data is not enough: a side effect such as writing a file, or a step that must follow another it shares no data with. (Meridian's view)
Sources
- [1]Barrier (computer science) - Wikipediasecondary source
- [2]Block Until Done Tooldocumentation
- [3]SYNCHRONIZE [EasyMorph Help]documentation
- [4]Blocking transform | Apache Hopdocumentation
- [5]Apache Hopdocumentation
- [6]Fork–join model - Wikipediasecondary source
- [7]Dataflow programming - Wikipediasecondary source