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

CI tests appear to run indefinitely when parallelized, but only on Github, not locally #25

Closed
abelbraaksma opened this issue Oct 14, 2022 · 1 comment
Labels
bug Something isn't working github_actions Pull requests that update GitHub Actions code
Milestone

Comments

@abelbraaksma
Copy link
Member

abelbraaksma commented Oct 14, 2022

Attempt at fixing and more analysis: #27.

While working on PR #23, it turned out that the test runner never finished, leading to empty logs (while running or after canceling). The bad behavior of the Github reporting is explained here: actions/runner#1326 (and it was closed with no fix).

The cause appears to be a (potential) race condition. It is yet unclear whether that is caused by the resumable code or something else. The temporary solution in #23 is to disable parallel runs in CI and to improve reporting.

Unfortunately, xUnit reporting is quite useless for cases like this. It only reports when a test has finished, not when it started. While dotnet run has a --blame-hang-timeout, which at least solves the issue with GH action reporting, as at the very least, this results in a failed test run.

Opening this issue to investigate further, so that we can close #23 meanwhile, as the implementations there have nothing to do with this behavior (removing enough tests removes the issue, but it doesn't matter which ones you remove, ultimately, the race condition comes back).

Example of a run that went on for over 5 hours (!): https://github.com/abelbraaksma/TaskSeq/actions/runs/3250819154/jobs/5334999458 (note: after retention period is over, this log will be gone).

abelbraaksma added a commit that referenced this issue Oct 14, 2022
Revert "Troubleshooting CI, remove OfXXX, CE, Other and ToXXX"

This reverts commit 6856b9e.

Turn TaskSeq.empty into a unit-function

Troubleshooting CI, remove Item, Pick, CE

Revert "Troubleshooting CI, remove Item, Pick, CE"

This reverts commit bc6c260.

Several attempts at troubleshooting CI issue, see log details and #25

Temporarily killing most tests, to troubleshoot hanging CI

Revert "Temporarily killing most tests, to troubleshoot hanging CI"

This reverts commit b84fff1.

Troubleshooting CI, adding back several new tests

Temporarily killing most tests, to troubleshoot hanging CI

Revert "Temporarily killing most tests, to troubleshoot hanging CI"

This reverts commit b84fff1.

Troubleshooting CI, adding back several new tests

Revert "Troubleshooting CI, adding back several new tests"

This reverts commit 5ecf179.

Troubleshooting CI, re-enabling only some tests, including new perf tests

Revert "Troubleshooting CI, re-enabling only some tests, including new perf tests"

This reverts commit 602cb3a.

Troubleshooting CI, removing only the new perf tests

Revert "Troubleshooting CI, removing only the new perf tests"

This reverts commit d16f739.

Troubleshooting CI, up until Iter is included

Revert "Troubleshooting CI, up until Iter is included"

This reverts commit 7f63395.

Troubleshooting CI, up until Iter is removed (excluded)

This reverts commit 7f63395.

Revert "Troubleshooting CI, up until Iter is removed (excluded)"

This reverts commit 32d463b.

Troubleshooting CI, tests for Last, Map and Pick excluded

Revert "Troubleshooting CI, tests for Last, Map and Pick excluded"

This reverts commit 9132fee.

Troubleshooting CI: remove all tests but Choose tests

Troubleshooting CI, add hang timeout test

Revert "Troubleshooting CI: remove all tests but Choose tests"

This reverts commit 93cfda5.

Troubleshooting CI, removing deliberately hanging test, leave blame-detection in test.yaml

Troubleshooting hanging CI: order test cases (currently only within a class, not sure how to change it)

Troubleshooting CI, re-enable parallelization of tests and clean code
abelbraaksma added a commit that referenced this issue Oct 14, 2022
Revert "Troubleshooting CI, remove OfXXX, CE, Other and ToXXX"

This reverts commit 6856b9e.

Turn TaskSeq.empty into a unit-function

Troubleshooting CI, remove Item, Pick, CE

Revert "Troubleshooting CI, remove Item, Pick, CE"

This reverts commit bc6c260.

Several attempts at troubleshooting CI issue, see log details and #25

Temporarily killing most tests, to troubleshoot hanging CI

Revert "Temporarily killing most tests, to troubleshoot hanging CI"

This reverts commit b84fff1.

Troubleshooting CI, adding back several new tests

Temporarily killing most tests, to troubleshoot hanging CI

Revert "Temporarily killing most tests, to troubleshoot hanging CI"

This reverts commit b84fff1.

Troubleshooting CI, adding back several new tests

Revert "Troubleshooting CI, adding back several new tests"

This reverts commit 5ecf179.

Troubleshooting CI, re-enabling only some tests, including new perf tests

Revert "Troubleshooting CI, re-enabling only some tests, including new perf tests"

This reverts commit 602cb3a.

Troubleshooting CI, removing only the new perf tests

Revert "Troubleshooting CI, removing only the new perf tests"

This reverts commit d16f739.

Troubleshooting CI, up until Iter is included

Revert "Troubleshooting CI, up until Iter is included"

This reverts commit 7f63395.

Troubleshooting CI, up until Iter is removed (excluded)

This reverts commit 7f63395.

Revert "Troubleshooting CI, up until Iter is removed (excluded)"

This reverts commit 32d463b.

Troubleshooting CI, tests for Last, Map and Pick excluded

Revert "Troubleshooting CI, tests for Last, Map and Pick excluded"

This reverts commit 9132fee.

Troubleshooting CI: remove all tests but Choose tests

Troubleshooting CI, add hang timeout test

Revert "Troubleshooting CI: remove all tests but Choose tests"

This reverts commit 93cfda5.

Troubleshooting CI, removing deliberately hanging test, leave blame-detection in test.yaml

Troubleshooting hanging CI: order test cases (currently only within a class, not sure how to change it)

Troubleshooting CI, re-enable parallelization of tests and clean code
@abelbraaksma
Copy link
Member Author

This issue was not caused by us, but by an XUnit bug, see: xunit/xunit#2587.

CI will run tests sequentially for now, and maybe I should move over to a framework that supports this kind of tests (more) properly.

@abelbraaksma abelbraaksma added bug Something isn't working github_actions Pull requests that update GitHub Actions code labels Oct 22, 2022
@abelbraaksma abelbraaksma added this to the v0.1.0 milestone Mar 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working github_actions Pull requests that update GitHub Actions code
Projects
None yet
Development

No branches or pull requests

1 participant