[ 
https://issues.apache.org/jira/browse/NIFI-2384?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Witt updated NIFI-2384:
------------------------------
    Description: 
If you have a cycle with back pressure being fed by a source with back pressure 
and the source of data is fast enough you can end up in a dead lock situation.

We should have cycle detection occur and then in the presence of a cycle which 
has backpressure on the source edge (back pressure on source edge and back 
pressure on all edges in the cycle) then we should ignore the backpressure on 
the destination edge and pull data from the back pressured cycle source edge.

Doing this generically on all components might be problematic as different 
processors can have different relationships and behaviors.  However, doing this 
on a funnel could make sense as it can have only one output relationship.  It 
might be the case that such back-pressure directed graph cycle detection and 
avoidance is only feasible when using a funnel with a single output (not 
cloned).  But then this is something which can be well documented and explained 
as the approach to avoid these cycles.

Attached is a template which can replicate this condition.  Look on the bottom 
left cycle.

  was:
If you have a cycle with back pressure being fed by a source with back pressure 
and the source of data is fast enough you can end up in a dead lock situation.

We should have cycle detection occur and then in the presence of a cycle which 
has backpressure on the source edge (back pressure on source edge and back 
pressure on all edges in the cycle) then we should ignore the backpressure on 
the destination edge and pull data from the back pressured cycle source edge.

Attached is a template which can replicate this condition.  Look on the bottom 
left cycle.


> Back-pressure should use cycle detection to avoid dead lock conditions
> ----------------------------------------------------------------------
>
>                 Key: NIFI-2384
>                 URL: https://issues.apache.org/jira/browse/NIFI-2384
>             Project: Apache NiFi
>          Issue Type: Improvement
>          Components: Core Framework
>    Affects Versions: 1.0.0
>            Reporter: Joseph Witt
>         Attachments: this_aint_right.xml
>
>
> If you have a cycle with back pressure being fed by a source with back 
> pressure and the source of data is fast enough you can end up in a dead lock 
> situation.
> We should have cycle detection occur and then in the presence of a cycle 
> which has backpressure on the source edge (back pressure on source edge and 
> back pressure on all edges in the cycle) then we should ignore the 
> backpressure on the destination edge and pull data from the back pressured 
> cycle source edge.
> Doing this generically on all components might be problematic as different 
> processors can have different relationships and behaviors.  However, doing 
> this on a funnel could make sense as it can have only one output 
> relationship.  It might be the case that such back-pressure directed graph 
> cycle detection and avoidance is only feasible when using a funnel with a 
> single output (not cloned).  But then this is something which can be well 
> documented and explained as the approach to avoid these cycles.
> Attached is a template which can replicate this condition.  Look on the 
> bottom left cycle.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to