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

Avoid Python patch version in engine hash (Cherry-pick of #19784) #19799

Merged
merged 1 commit into from
Sep 7, 2023

Conversation

WorkerPants
Copy link
Member

This fixes #19781 by ensuring the engine hash (as computed by calculate_engine_hash.sh) only uses the implementation, major version and minor version, not the patch version (e.g. cpython 3 9 instead of Python 3.9.17. Before this, the patch version could differ between runners on CI, and that would change the engine hash, leading to jobs attempting to rebuild the engine.

This is motivated by the assumption that the engine only depends on the CPython ABI version, which is the same for all patch versions, and thus having the hash change based on the patch version is unnecessary.

GitHub seems to upgrade the Python versions across runners in phases, meaning actions/setup-python with a version specifier of 3.9 will sometimes be 3.9.17, and sometimes 3.9.18. When the the engine is built with one version, and then a test job has a different version, the test job would notice the mismatch in engine hash and start rebuilding the Rust engine. See #19780 for verification of this.

This explains why CI has been failing inconsistently: sometimes we get lucky and all jobs run with the same Python version, but often we don't.

This is one approach to fixing #19781, that's probably better than #19783.

(Only one of this and #19783 needs to merge.)

This fixes #19781 by ensuring the engine hash (as computed by
calculate_engine_hash.sh) only uses the implementation, major version
and minor version, not the patch version (e.g. `cpython 3 9` instead of
`Python 3.9.17`. Before this, the patch version could differ between
runners on CI, and that would change the engine hash, leading to jobs
attempting to rebuild the engine.

This is motivated by the assumption that the engine only depends on the
CPython ABI version, which is the same for all patch versions, and thus
having the hash change based on the patch version is unnecessary.

GitHub seems to upgrade the Python versions across runners in phases,
meaning `actions/setup-python` with a version specifier of `3.9` will
sometimes be 3.9.17, and sometimes 3.9.18. When the the engine is built
with one version, and then a test job has a different version, the test
job would notice the mismatch in engine hash and start rebuilding the
Rust engine. See #19780 for verification of this.

This explains why CI has been failing inconsistently: sometimes we get
lucky and all jobs run with the same Python version, but often we don't.

This is one approach to fixing #19781, that's probably better than
#19783.

(Only one of this and #19783 needs to merge.)
@WorkerPants WorkerPants added this to the 2.18.x milestone Sep 7, 2023
@WorkerPants WorkerPants added the category:internal CI, fixes for not-yet-released features, etc. label Sep 7, 2023
@huonw huonw merged commit 0abb20e into 2.18.x Sep 7, 2023
24 checks passed
@huonw huonw deleted the cherry-pick-19784-to-2.18.x branch September 7, 2023 23:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
category:internal CI, fixes for not-yet-released features, etc.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants