Managing Relationship Connections

Modified on Thu, 11 Dec, 2025 at 12:41 PM

Summary

Relationships define where FlowFiles can go. Connections determine how they get there. This article explains how to create, modify, and troubleshoot connections, including dynamic routes, funnels, duplicate connections, dead connections, and restrictions around running processors.


Connections link relationships to downstream components

A relationship becomes active only when you connect it to another component:

Processor A (success) → Processor B

This creates a queue and establishes the routing path.

If a relationship is not connected or terminated, the processor is invalid.


You cannot move a relationship connected to a running processor

This rule surprises users the first time they hit it.

To modify a connection:

  1. Stop the destination processor (red square)

  2. Create or adjust the connection

  3. Start the processor again

This prevents mid-execution changes that would disrupt FlowFile ordering or state.


A single relationship can have multiple connections

You can send the same FlowFile to multiple downstream processors by drawing multiple connections.

Example:

Processor A (success)
↳ Processor B
↳ Processor C

A single FlowFile routed to success becomes two FlowFiles, one for each queue.


Uses include:

  • Parallel processing

  • Auditing

  • Logging

  • Sending data to analytics and operational paths simultaneously


No special configuration required - duplication is automatic.


Editing Connection Properties (Name, Backpressure, Bendpoints)

Connections aren’t just lines on the canvas - each one has its own configuration panel where you can control how data flows across it.


Right-click a connection → Configure.


You can adjust:

1. Connection Name

You can assign a custom name to any connection.
This is especially helpful when a processor sends different paths into multiple downstream branches and you want clearer labeling.

Examples:

  • success → branch A

  • success → metrics

  • failure → dead letter queue

Names improve readability but do not affect routing behavior.


2. Backpressure on the Connection

Each connection has its own backpressure thresholds:

  • Object count

  • Data size

When either threshold is exceeded:

  • The queue stops accepting more FlowFiles

  • The upstream processor becomes backpressured

  • Flow slows or halts based on processor scheduling

Connection-level backpressure is one of the main tools for controlling flow behavior.


3. Bendpoints (Adjusting Line Paths)

You can reshape connection lines to keep the canvas readable.


Double click on the connection line to add a bendpoint that can be dragged around the canvas.   To remove a bendpoint, simply double click on it.


This is purely visual but extremely helpful in larger flows to avoid crossing lines or hiding relationships behind components.


4. Prioritizers (Optional)

Connections support prioritizers such as:

  • First In First Out

  • Largest FlowFile First

  • Custom attribute-based prioritization

Most flows don’t need this, but it’s important in ingestion or throttling scenarios.


Funnels as temporary or organizational landing spots

Funnels are extremely useful when building or rearranging a flow.


Reasons to use a funnel:

  • Temporary parking spot for a relationship until you finish building downstream logic

  • Helps manage many incoming edges cleanly

  • Lets you consolidate multiple relationships into a single output

  • Allows you to connect relationships before downstream processors exist


Common pattern during design:

success → Funnel
failure → Funnel

Then, once the downstream logic is ready, connect from the funnel to the new component.


Dynamic relationships don’t appear until you “Apply” changes

Processors like RouteOnAttribute, RouteOnContent, and others generate dynamic relationships based on configuration.


These relationships:

  • Do not appear in the UI while editing

  • Only appear after clicking Apply

  • Must then be connected or terminated like any other relationship


If you create a rule called high_value, a new relationship named high_value will appear only after saving.


Removing a dynamic relationship creates a “dead” connection (dotted line)

If you remove or rename a rule in a processor, the old relationship disappears from the processor but still exists on the canvas as a dotted connection.


This indicates:

  • The connection references a relationship that no longer exists

  • Any downstream processors relying on that connection become unreachable


Fix by deleting the dotted connection or re-adding a rule that produces the same relationship name.


Editing connections may invalidate processors

Any of these actions can cause temporary invalidation:

  • Removing a connection upstream

  • Changing relationship names

  • Deleting downstream processors

  • Disconnecting required relationships without terminating them


Clockspring immediately validates the graph to prevent data loss.


Quick rules to remember

  • You must stop a processor before connecting to or from it.

  • One relationship can feed multiple connections, producing duplicate FlowFiles.

  • Funnels are great for temporary routing during flow design.

  • Dynamic routes appear only after applying changes.

  • Removing dynamic routes leaves dotted “dead” connections.

  • All connections must be resolved for the processor to start.


Related Articles

  • Relationships: What They Are and How They Work

  • Queues and Backpressure

  • Retries, Yielding, and Penalization

  • Terminating Relationships

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article