@s198
If I am following your description correctly, It appears to be working as designed.
The number of retry attempts is set to 3. However, after all retry attempts are exhausted, the process does not complete and ends up queuing in the Retry relationship.
When you set "Retry" on a relationship, it tell NiFi to attempt that many retries before on the component BEFORE routing the FlowFile to the relationship (So FlowFile stays on current inbound connection and you see the hour glass indicating a FlowFile is penalized on that connection). See in your dataflow InvokeHTTP will retry up to 3 times to process the inbound FlowFile. If processing of the FlowFile results in a "retry" relationship destination, it will get penalized again until configured number of retries completes and the route to "retry" relationship connection. And that is waht we see happening in your dataflow. After those three attempts the FlowFile get transferred to "retry" relationship which you have in a connection looping back on the processor. We then see the hour glass there meaning the 3 reties is happening again. This will continue forever unless that FlowFile is eventually successful.
I think what you really wanted to do is retry 3 times and if all three times result in routing to retry relationship, terminate the FlowFile (delete it). So in this case you would check both "terminate" and "retry" boxed on the retry relationship. After 3 unsuccess FlowFile get terminated.
If you want to retain the FlowFile after 3 failed retry attempts, don't loop the "retry" relationship back on the processor, but instead route to some other processor for your error handling/notification/etc...
Please help our community grow. If you found any of the suggestions/solutions provided helped you with solving your issue or answering your question, please take a moment to login and click "Accept as Solution" on one or more of them that helped.
Thank you,
Matt