-
Notifications
You must be signed in to change notification settings - Fork 636
Implement uncoordinated upgrades on e2e #238
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
Conversation
This reverts commit 068f5b78d3b7cf99fb21296707117e4f4e2ef3e0.
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.
Looks great! I tried running this locally but got the same kinds of errors that were seen in the nightlies, so I assume that #237 will fix that.
- ./{{ .Name }}:/cometbft | ||
- ./{{ .Name }}:/tendermint |
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.
Does this work as expected? (i.e. the same host folder being mounted in two different places)
Never tried this before with Docker 🙂
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.
We need to do this, since older images ( < v0.34.24
) use /tendermint
as home path, and we can no longer change them.
In normal conditions, I agree it's dangerous to mount the same volume in two different places, but in this case, I think we are safe because:
- Old images will only use
/tendermint
- New images will only use
/cometbft
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.
Without this, the docker-compose didn't work for old images
{{- if eq .ABCIProtocol "builtin" }} | ||
entrypoint: /usr/bin/entrypoint-builtin | ||
{{- else }}{{ if eq .ABCIProtocol "builtin_unsync" }} | ||
{{- if or (eq .ABCIProtocol "builtin") (eq .ABCIProtocol "builtin_unsync") }} |
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.
Nice! Didn't know one could do this in templates.
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.
Yeah :-)
I needed to get familiar with templates while working on this, and found this trick by chance
Let me know if that's not the case. I'll keep this PR open until tomorrow |
* Fix multiversion e2e when `version <= v0.34.24` * Changes we want no matter what we do * Approach 1: With docker-compose up recreating image * Revert "Approach 1: With docker-compose up recreating image" This reverts commit 068f5b78d3b7cf99fb21296707117e4f4e2ef3e0. * Approach 2: With distinct docker-compose service * Fix the case when 'upgrade' is not the last perturbation * Update generator * Simplify template * bump * Update test/e2e/pkg/manifest.go * changelog * doc * fix doc (cherry picked from commit b27bb3a)
* Fix multiversion e2e when `version <= v0.34.24` * Changes we want no matter what we do * Approach 1: With docker-compose up recreating image * Revert "Approach 1: With docker-compose up recreating image" This reverts commit 068f5b78d3b7cf99fb21296707117e4f4e2ef3e0. * Approach 2: With distinct docker-compose service * Fix the case when 'upgrade' is not the last perturbation * Update generator * Simplify template * bump * Update test/e2e/pkg/manifest.go * changelog * doc * fix doc (cherry picked from commit b27bb3a) Co-authored-by: Sergio Mena <sergio@informal.systems>
Closes #56 and #167
This PR builds on existing "multiversion" infra to change a node's docker image on the fly (stop, change image, restart).
I spent some time researching solutions, with the intention of finding solutions as surgical as possible. Please review the two approaches included in this PR:
The first commit of this PR is also fixing the e2e infra for tendermint-based releases (<= v0.34.24)
With this PR, we can define testnet manifests that can:
I still need to update the changelog and the doc, but first, I'd like to have the two approaches reviewed.
PR checklist
CHANGELOG_PENDING.md
updated, or no changelog entry neededdocs/
) and code comments, or nodocumentation updates needed