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 on GitHub=="not mergeable"; Tide's PR status=="Good to be merged" #15402

Closed
Ark-kun opened this issue Nov 26, 2019 · 21 comments
Closed

Tide on GitHub=="not mergeable"; Tide's PR status=="Good to be merged" #15402

Ark-kun opened this issue Nov 26, 2019 · 21 comments
Assignees
Labels
area/prow/tide Issues or PRs related to prow's tide component area/prow Issues or PRs related to prow kind/bug Categorizes issue or PR as related to a bug. kind/oncall-hotlist Categorizes issue or PR as tracked by test-infra oncall.

Comments

@Ark-kun
Copy link
Contributor

Ark-kun commented Nov 26, 2019

My PR which is "Good to be merged" is not getting merged for many hours. Looks like Tide forgot about it.

Probably related to #7254

Tide's PR status says "Good to be merged" https://prow.k8s.io/pr?query=is%3Apr+repo%3Akubeflow%2Fpipelines+author%3AArk-kun+head%3ASDK---Client---Fixed-Client-on-Windows---2

GitHub's Tide status is "Pending — Not mergeable." kubeflow/pipelines#2646

Tide status has nothing for the repo. https://prow.k8s.io/tide

@Ark-kun Ark-kun added the kind/bug Categorizes issue or PR as related to a bug. label Nov 26, 2019
@stevekuznetsov
Copy link
Contributor

Judging by the tide history something is misconfigured in your branch protection:

failed merging [2636]: [PR is unmergable. Do the Tide merge requirements match the GitHub settings for the repo? Required status check "tide" is pending.]
failed merging [2635]: [PR is unmergable. Do the Tide merge requirements match the GitHub settings for the repo? Required status check "Travis CI - Pull Request" is in progress.]

@stevekuznetsov stevekuznetsov added the kind/oncall-hotlist Categorizes issue or PR as tracked by test-infra oncall. label Nov 26, 2019
@cjwagner
Copy link
Member

ref: kubeflow/pipelines#930, kubeflow/pipelines#1653
"tide" should not be a required status check. The Travis CI GitHub check issue is being actively worked on now.
For now if this happens please /hold the PR and reference one of the tracking issues.

@Bobgy
Copy link
Contributor

Bobgy commented Nov 26, 2019

"tide" should not be a required status check.

I don't quite follow. If "tide" is not required, how do we guard against people merging PRs without lgtm and approval labels.

Please correct me if I missed something, my understanding is:

failed merging [2635]: [PR is unmergable. Do the Tide merge requirements match the GitHub settings for the repo? Required status check "Travis CI - Pull Request" is in progress.]
failed merging [2636]: [PR is unmergable. Do the Tide merge requirements match the GitHub settings for the repo? Required status check "tide" is pending.]

These two errors are irrelevant. Current symptom is that tide status check is not synced on kubeflow/pipelines repo, therefore merges are blocked. For example: kubeflow/pipelines#2646

@jingzhang36
Copy link
Contributor

jingzhang36 commented Nov 26, 2019

I ran into the same issue on kubeflow/pipelines repo. kubeflow/pipelines#2620

@stevekuznetsov
Copy link
Contributor

I don't quite follow. If "tide" is not required, how do we guard against people merging PRs without lgtm and approval labels.

In general we do not suggest that contributors have the ability to merge using the GitHub UI unless it is expected that they have the background to circumvent the process. Prow has a set of functionality (like, /milestone) that allows users without write access to the repository to be able to use useful GitHub features and be productive. Giving a user the ability to merge on their web UI is not compatible with the current model.

@Ark-kun
Copy link
Contributor Author

Ark-kun commented Nov 26, 2019

Judging by the tide history something is misconfigured in your branch protection:

failed merging [2636]: [PR is unmergable. Do the Tide merge requirements match the GitHub settings for the repo? Required status check "tide" is pending.]
failed merging [2635]: [PR is unmergable. Do the Tide merge requirements match the GitHub settings for the repo? Required status check "Travis CI - Pull Request" is in progress.]

I know that this happens (sorry about that, we're already migrating), but in this case it wasn't the case. All other checks were green.

Also Travis does not prevent Tide from putting PR into the merge pool.

Please look at @jingzhang36 case - kubeflow/pipelines#2620
It's still live. All checks are green other than Tide.

@cjwagner
Copy link
Member

cjwagner commented Nov 26, 2019

Tide is ignoring that PR because of a missing status context due to a new job requirement:

{
  base-sha: "9ad7d7dd9776ce75a83712f5723db2ef93ba5c26"   
  branch: "master"   
  component: "tide"   
  context: "kubeflow-pipeline-frontend-test"   
  controller: "sync"   
  file: "prow/tide/tide.go:564"   
  func: "k8s.io/test-infra/prow/tide.filterPR"   
  level: "debug"   
  msg: "filtering out PR as unsuccessful context is not pending"   
  org: "kubeflow"   
  pr: 2620   
  repo: "pipelines"   
  sha: "e1ef51d0a79ed443518afdb0cfcb4541b50d5075"   
 }

New requirement: #15381

The Tide status context should have updated to reflect the missing requirement after the PR was commented on after the new requirement went into effect. IIRC the status-reconciler also should have triggered the newly required presubmit for any open PRs. @stevekuznetsov @alvaroaleman Any ideas?

@rmgogogo
Copy link
Contributor

I also run into the issue.

@Bobgy
Copy link
Contributor

Bobgy commented Nov 27, 2019

@stevekuznetsov thanks for the explanation! I've updated the repo to change tide to non required.

@Bobgy
Copy link
Contributor

Bobgy commented Nov 27, 2019

Did I understand it correctly? Root cause is:

  1. I added a new test kubeflow-pipeline-frontend-test
  2. Old PRs didn't run this test
  3. So old PRs cannot be merged
  4. However, tide should update the new requirement in its context.

For blocked PRs, we can just /retest or /test kubeflow-pipeline-frontend-test should make sure tide is up-to-date.

@alvaroaleman
Copy link
Member

Well, Tide does know about the new requirement, otherwise the PR would have gotten merged. The status-reconciler (if its set up on prow.k8s.io) should create the new job for existing PRs after the new job was added to the configuration. Since the status-reconciler is edge-driven thought, that will only happen if it observed the config change.

@stevekuznetsov
Copy link
Contributor

I would look at the status-reconciler logs to see what it did as a response to the config changing.

@fejta
Copy link
Contributor

fejta commented Dec 5, 2019

/area prow
/area prow/tide
/assign @stevekuznetsov @cjwagner

Do we need this on the oncall-hotlist? It looks like this is largely a configuration/user error, right? Not a prow outage/regression.

@k8s-ci-robot k8s-ci-robot added area/prow Issues or PRs related to prow area/prow/tide Issues or PRs related to prow's tide component labels Dec 5, 2019
@cjwagner
Copy link
Member

cjwagner commented Dec 6, 2019

The immediate problem has been worked around, but we haven't debugged why Tide's status controller or the status-reconciler didn't work as expected which could be a regression.

@Ark-kun
Copy link
Contributor Author

Ark-kun commented Dec 6, 2019

@cjwagner @fejta
I have another instance of PR with similar symptoms (but this time, this has nothing to with added presubmit tests). If you think the issue is different, I'll open a new one.

GitHub: kubeflow/pipelines#2688
Some checks haven’t completed yet
3 expected, 1 pending, and 3 successful checks

  • kubeflow-pipeline-e2e-test Expected — Waiting for status to be reported
  • kubeflow-pipeline-frontend-test Expected — Waiting for status to be reported
  • kubeflow-pipeline-sample-test Expected — Waiting for status to be reported
  • tide Pending — Not mergeable.

Tide: Good to be merged https://prow.k8s.io/pr?query=is%3Apr+repo%3Akubeflow%2Fpipelines+author%3AArk-kun+head%3ASDK---Fixed-capitalization-in-_python_function_name_to_component_name

Tide status: nothing for that repo.

@fejta
Copy link
Contributor

fejta commented Dec 6, 2019

The kubeflow jobs are migrating to prow.gflocks.com. Has that finished? Any chance it's related?

@stevekuznetsov
Copy link
Contributor

@Ark-kun that looks like you have jobs still configured in the branch protection for the branch but they are not configured in Prow and have not been triggered.

@fejta fejta closed this as completed Jan 16, 2020
@hzxuzhonghu
Copy link
Member

I meet the similar error:

 "Error":"failed merging [918]: [PR is unmergable. Do the Tide merge requirements match the GitHub settings for the repo? Required status check "Travis CI - Pull Request" is in progress.]"
    }

volcano-sh/volcano#929

Any help is appreciated.

@cjwagner
Copy link
Member

@hzxuzhonghu GitHub checks are not supported by Tide, only status contexts that appear near the merge button (not the checks tab). See the issues referenced here for more info: #15402 (comment)

@hzxuzhonghu
Copy link
Member

@cjwagner Sorry, i can not catch up, what do you mean GitHub checks

@petr-muller
Copy link
Member

@hzxuzhonghu This doc should help about the difference between statuses and checks: https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-status-checks#types-of-status-checks-on-github

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 area/prow Issues or PRs related to prow kind/bug Categorizes issue or PR as related to a bug. kind/oncall-hotlist Categorizes issue or PR as tracked by test-infra oncall.
Projects
None yet
Development

No branches or pull requests