I have subpipelines started via the Pipeline Execute snap in a parent that runs continuously (not Ultra) as a listener. There may be long periods of no documents flowing through the parent to the subpipeline. The subpipeline contains a DB snap that has a timeout for its connection. The subpipeline fails with this timeout if enough data isn’t flowing through it often enough. I want to terminate the subpipeline if it hasn’t had any documents through it after X amount of hours. Is there a way from within the subpipline or its parent to monitor this and terminate the subpipeline?
What are your settings on the Pipeline Execute snap?
I have it set to Reuse executions and a Pool size of 10.
This sounds like a bug, the snap should not be failing like this. We’re going to take a look at it.
How are you keeping the pipeline running continuously? The safest approach would be to have the snap that is keeping the pipeline alive finish after some amount of time and then start up another execution.
The pipeline has a continuous JMS listener that keeps it executing. Its on a scheduled task so that if it happens to stop it starts up again right away. I can’t set the pipeline or task to stop after a certain period of time, correct? I would have to create another pipeline to monitor other pipeline executions, correct?
Ah, I was hoping the JMSConsumer had a timeout. It does have a ‘Control Destination’ that I think you can use to stop it.
The ability to stop a scheduled task after a period of time was added in the 4.10 release (see the tasks page). Be aware that stopping a pipeline is a pretty harsh operation, any snaps that are actively working will be interrupted and you might lose data.
Thanks, I will look into the Control Destination.
Ultimately I think the best solution would be if the DB snaps re-connected upon a connection timeout instead of erroring out. Do you know if that is a near-future enhancement?