Also asked over the support.
- IMO this task config looks ok, as soon as your delay time is a correct value.
But technically you don't need to catch any error on system tasks. Because if a system tasks failes, it automatically tries to run it again after an increasing time.
- In general you're right. A deplyoment will stop all PMV's which are releated, meaning the direct PMV's and also all dependent PMV's.
But this stop will not "kill" active running tasks or will check if a task is currently running. This means if you have a system task running and the run duration is very long, it can still run while the deployment.
New tasks (user and system tasks) will not be started. Or better there are no new system tasks which are added to the execution Queue if the PMV is already stopped.
So to prevent that a system task runs while a deployment you could e.g check at the beginning if the current PMV is in the ActivityState.ACTIVE.
- As said the system will not add any system task to the execution queue if the PMV of this task is not in the state ACTIVE. But if the task is already in the queue or already running it will not be stopped or something else. It may fail, because of some other problems but it will not be terminated.
- I think I answered this question already above
- I think this one depends on, what the target of your tasks is (or better what they do, or how long they are running). In general it shouldn't be a problem if you have a lot of system tasks. But each system task will need some resources and especially if the run multiple times.
I can not say if such a task has an impact on the deployment if I don't know what they do.
So it's really hard to say what's the problem here if I don't have the deployment log.
Or did you check if something general is in the ivy.log?
Also a hint from my side: I'm not sure what this process is all about, but personally I would always prefer a singal instead of pooling until a condition is ok.
I mean, this process looks like that there is system task which tries every e.g. 5min (I don't know how long the delay is), to do something. If it fails it will try again in 5min.
Maybe the same could be done with a simple signal. So instead of check if a condition is reached, the state itself should fire a singal when this task should run.
But as I said, I'm not sure what this task is doing, so it's hard to say if this is even possible.