-
Notifications
You must be signed in to change notification settings - Fork 220
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TEP-0121: Retries - Move to Implementable #879
Conversation
/kind tep |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/assign
@XinruZhang please update readme.md with the updated status and date (that's why linting is failing) and update the table of contents too
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for this!
As I commented previously, personally I'd prefer the option where retries are managed by the parent controller - it would give custom runs a default retry approach available out of the box.
Nonetheless I think this proposal is sound and a valid alternative, and it has the very nice benefit of maintaining the same custom task API we have today.
We should get +1 from @lbernick @pritidesai and @jerop before we merge this.
/approve
/assign @lbernick |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I strongly support this change because it fixes Conditions.Succeeded
- going forward, setting Conditions.Succeeded
to "True"
or "False"
is the final status. Removing the caveat of remaining retries in "False"
case makes the status reporting clearer.
/approve
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I do like this approach 🙃
I think I had an idea that would combine the best of both worlds (Pipeline driven and Custom/TaskRun driven retries)!
This approach combines the best of both worlds - since it provides a default implementation of retries, but it allows custom controllers and taskrun controller to take over control of retries if they want to, all with no changes in the pipeline definition from a user point of view, and no changes on the This approach also means that the we could start with having no taskrun controller implementation in the beginning (like today). Once we implement it would take over the pipelinerun implementation, and provide out of the box efficient matrix retries. |
Thanks for the comment Andrea @afrittoli ! I understand that implementing We are sure of that this current proposal definitely does not block the built-in wdyt? cc @lbernick @jerop @pritidesai @dibyom |
I created an issue: tektoncd/pipeline#5751 to track |
At API WG today, we agreed to move forward with the design and explore the built-in implementation that @afrittoli suggested in future work - tektoncd/pipeline#5751 |
I agree with Andrea that if I were designing this functionality from scratch, I'd prefer an approach where the pipelinerun controller creates a new instance of each child object for each retry; however this is a reasonable proposal to move forward with. Thanks for documenting that this blocks our v1 software release rather than our v1 api version of TaskRun. /approve |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: afrittoli, jerop, lbernick, vdemeester The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
Propose a solution and move the tep to implementable
Updated the TEP per Priti's suggestion! Thanks for those suggestions @pritidesai! |
Thank you @XinruZhang 👍 The changes look great so far. Nothing blocking here but an important detail to be designed and included. when does a taskRun controller or customRun controller triggers a retry of an existing taskRun or customRun? i.e. when is a next attempt scheduled? Before TEP-0121: Pipelinerun controller creates a After TEP-0121: Pipelinerun controller creates a Thoughts? I am merging this TEP after leaving this comment and with enough approvals. /lgtm |
@pritidesai Thanks for the comment Priti, I'm writing POCs for this implementation detail. Meanwhile, I think @afrittoli made a great point about |
👍
I think this is missing not? 🤔 If the CustomRun controller does not implement retries ... otherwise it contradicts with second bullet.
Please refer to the my comment here for the details on the status. How status is set to |
Thanks @pritidesai and @afrittoli ❤️ I wrote a POC (tektoncd/pipeline#5766) of implementing This implementation is slightly different from @pritidesai described, but the main ideas match: we are able to control "when to initiate a next attempt and at the same time making sure pipelineRun controller waits for the final outcome of the taskRun." |
This PR proposes a solution for TEP-0121 and moves it to implementable. PTAL.
Signed-Off-By: @jerop @XinruZhang
cc @tektoncd/core-maintainers