Skip to content

Flow States and Data Behavior

This guide explains how flow states affect data processing in DeltaFi, including the relationship between flow state, flow validity, and plugin state.

Flow States

Every flow has a state that controls whether it processes data:

StateDescriptionData Behavior
RUNNINGFlow is active and ready to processNormal processing (if valid and plugin ready)
PAUSEDFlow is temporarily suspendedData queues for later processing
STOPPEDFlow is intentionally haltedData is rejected

RUNNING

A running flow actively processes incoming data. Data sources accept ingress, transforms process published data, and data sinks egress data to external systems.

PAUSED

A paused flow queues data instead of processing it. Use pause when you need to:

  • Temporarily halt processing for maintenance
  • Buffer data during downstream system outages
  • Control data flow rates

Queued data automatically resumes processing when the flow returns to RUNNING.

STOPPED

A stopped flow rejects data entirely. Use stop when:

  • The flow should not receive any data
  • You want to prevent accidental data ingress
  • The flow is deprecated but not yet removed

Flow Validity

Flows can become invalid due to configuration errors. Invalid flows behave differently from valid flows:

ValidityData Behavior
ValidProcesses based on flow state
InvalidData queues (regardless of flow state)

Common Causes of Invalid Flows

  • Unresolved variables: Flow references a variable that doesn't exist
  • Unregistered action: Flow uses an action type not registered by any plugin
  • Inactive action: Action exists but is not currently active
  • Invalid action parameters: Action parameters fail validation
  • Invalid configuration: Other configuration errors

How Invalid Flows Handle Data

Invalid flows queue data rather than rejecting it. This prevents data loss when:

  • A plugin is temporarily unavailable
  • Configuration changes cause transient validation errors
  • Variables are being updated

Once the flow becomes valid again, queued data automatically resumes processing.

Complete Behavior Matrix

The effective behavior of a flow depends on three factors:

  1. Flow State: RUNNING, PAUSED, or STOPPED (user-controlled)
  2. Flow Validity: Valid or Invalid (configuration-dependent)
  3. Plugin State: INSTALLED, PENDING, FAILED, etc. (system-controlled)
Flow StateValid?Plugin Ready?Result
RUNNINGYesYesNormal processing
RUNNINGYesNoData queues
RUNNINGNoAnyData queues
RUNNINGAnyDisabledData rejected
PAUSEDAnyAnyData queues
STOPPEDAnyAnyData rejected

Key Principles

  1. Data queues by default: Unless explicitly stopped or disabled, data queues rather than being rejected
  2. User intent preserved: Only STOPPED flows and disabled plugins reject data
  3. Automatic recovery: Once conditions improve, queued data processes automatically

Queued Data Processing

When data is queued (due to pause, invalid flow, or plugin not ready):

  1. The DeltaFile is marked as paused with state PAUSED
  2. Data remains in the queue until conditions change
  3. A background scheduler checks every 5 seconds for data that can be unpaused
  4. When the flow becomes processable, data automatically resumes

What Triggers Resume

Queued data resumes when ALL of these are true:

  • Flow state is RUNNING (not PAUSED or STOPPED)
  • Flow is valid (no configuration errors)
  • Plugin is ready (INSTALLED and not disabled)

Monitoring Queued Data

View paused DeltaFiles in the UI or query via API:

graphql
query {
  deltaFiles(filter: { paused: true }) {
    deltaFiles {
      did
      name
      flows {
        name
        state
      }
    }
  }
}

Operational Scenarios

Plugin Upgrade

During a plugin upgrade:

  1. Plugin enters INSTALLING state
  2. Data arriving at plugin's flows queues automatically
  3. Plugin completes upgrade, enters INSTALLED state
  4. Queued data resumes processing

No manual intervention required.

Configuration Change

When updating flow configuration:

  1. Changes may temporarily invalidate the flow
  2. In-flight data queues
  3. Once configuration validates, data resumes

Downstream System Outage

If an egress destination is unavailable:

  1. Pause the data sink to prevent error accumulation
  2. Data queues at the paused sink
  3. When the destination recovers, unpause
  4. Queued data egresses automatically

Deprecating a Flow

To safely deprecate a flow:

  1. Stop the flow to prevent new data
  2. Allow existing in-flight data to complete
  3. Remove the flow definition

Stopped flows reject new data, signaling to upstream systems that the flow is no longer available.

Contact US