Skip to content
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

tide: do not stop merging when one PR is unmergable #10001

Closed
BenTheElder opened this issue Nov 2, 2018 · 11 comments
Closed

tide: do not stop merging when one PR is unmergable #10001

BenTheElder opened this issue Nov 2, 2018 · 11 comments
Assignees
Labels
area/prow/tide Issues or PRs related to prow's tide component kind/bug Categorizes issue or PR as related to a bug. lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed.

Comments

@BenTheElder
Copy link
Member

test-infra stopped merging for three hours while trying to squash merge when squash merging was blocked, #9890 #9976 #9997 #9999 #10000 were all passing, but #9890 was first and unmergable

/kind bug
/area prow/tide

cc @cjwagner @stevekuznetsov

@k8s-ci-robot k8s-ci-robot added kind/bug Categorizes issue or PR as related to a bug. area/prow/tide Issues or PRs related to prow's tide component labels Nov 2, 2018
@stevekuznetsov
Copy link
Contributor

How can we both appease this issue and continue to promise that older PRs are merged first? In the issue you described it was an invalid merge strategy configured for the PR in question, right? I feel like we should alert an admin in this case and fix the issue, since the merges are failing for a infra-level problem usually.

@BenTheElder
Copy link
Member Author

We can always attempt to merge the older PR first but when a serial merge fails because the merge failed we can attempt to merge another ready serial PR before testing again.

We definitely need to raise this to admins, but there's not a super great mechanism for that right now.

@BenTheElder
Copy link
Member Author

I don't think we should promise that older PRs are merged first, it should be best effort. This same situation can occur with github API flakes or.... We should not get into a situation where this sits for 3 hours doing nothing.

Even if we had alerted the prow admins, what about a EG a weekend? The prow admins don't necessarily have the same productive hours as the users, we should avoid tide stalling out for any reason.

@stevekuznetsov
Copy link
Contributor

Sounds good, let's think through the implications of this best-effort in terms of the current workflow to make sure it doesn't lead to weird states we had not considered before.

@stevekuznetsov
Copy link
Contributor

One option -- have tide comment on the PR with an explanation of the error and /hold to pull the PR out of the queue

@cjwagner
Copy link
Member

One option -- have tide comment on the PR with an explanation of the error and /hold to pull the PR out of the queue

That seems reasonable and is a lot simpler than adding state to tide to track failed merges, but there is the down side of not retrying the merge before giving up meaning that transient failures could kick PRs out of the merge pool.
In particular if a repo requires the tide status context (which isn't recommended but does have use case) we typically fail to merge the PR on the first attempt because the status controller hasn't set the tide status to passing yet. We would need to synchronize Tide's status and sync controllers to avoid the race that causes that issue: #6289

This also assumes that the hold plugin is enabled on the repo.

@stevekuznetsov
Copy link
Contributor

checkconfig will error if you require the tide context and it's considered harmful to do so, so why should we support users that do it?

Good point that this requires the hold plugin, I guess we could add a tide-specific label that it won't merge into or choose one at random from the list of invalid labels in the query ;)

@fejta-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Apr 18, 2019
@fejta-bot
Copy link

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle rotten

@k8s-ci-robot k8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels May 18, 2019
@fejta-bot
Copy link

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

@k8s-ci-robot
Copy link
Contributor

@fejta-bot: Closing this issue.

In response to this:

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/prow/tide Issues or PRs related to prow's tide component kind/bug Categorizes issue or PR as related to a bug. lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed.
Projects
None yet
Development

No branches or pull requests

5 participants