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-27

    Hold records until upstream finishes, then release to output streams one at a time

  • Control Containerread 2026-09-27

    Run a group of tools only on a signal, to set the order of execution in a workflow

Apache Hop (4)
  • Blocking transformread 2026-09-27

    Hold all output until the last input row has arrived, optionally passing every row

  • Wait until named transform copies have finished before passing rows on

  • Joinread 2026-09-27

    Wait for parallel branches to finish before continuing

  • Startread 2026-09-27

    Entry point of every workflow

Apache NiFi (1)
  • EnforceOrderread 2026-09-27

    Enforce the expected order of FlowFiles that belong to the same group

Duckle (1)
EasyMorph (2)
  • Hold a mutual-exclusion lock on a resource across concurrently running projects

  • Synchronizeread 2026-09-27

    Pause this action chain until another table has finished calculating

Pentaho Data Integration (2)
Talend (2)
  • tPostjobread 2026-09-27

    Trigger the tasks to run after the Job has executed

  • tPrejobread 2026-09-27

    Trigger the tasks to run before the Job executes

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. [1]Barrier (computer science) - Wikipediasecondary source
  2. [2]Block Until Done Tooldocumentation
  3. [3]SYNCHRONIZE [EasyMorph Help]documentation
  4. [4]Blocking transform | Apache Hopdocumentation
  5. [5]Apache Hopdocumentation
  6. [6]Fork–join model - Wikipediasecondary source
  7. [7]Dataflow programming - Wikipediasecondary source