Updated workflow sweeper to consider a new config MaxPostponeDurationSeconds for in progress tasks #335
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Pull Request type
NOTE: Please remember to run
./gradlew spotlessApply
to fix any format violations.Changes in this PR
Preface: Currently when the sweeper processes a workflow and the task is in progress the sweeper picks up the task response timeout and queues a message on the decider queue using this time to calculate when to next process the workflow. On occasion when the sweeper and task completion events happen out of order this can have the effect of leaving workflows with completed tasks in limbo for long periods. With their tasks not being scheduled until that timeout is reached.
This fix pr addresses this by adding a config value MaxPostponeDurationSeconds to allow for tasks that may have a long and varied response time to be processed by the sweeper on a minimum schedule.
Describe alternative implementation you have considered
I have looked at ways to push the workflow to the decider but due to the asynchronous nature this can on occasion still fall out of step.