Implement uncoordinated upgrades on e2e#238
Conversation
This reverts commit 068f5b78d3b7cf99fb21296707117e4f4e2ef3e0.
thanethomson
left a comment
There was a problem hiding this comment.
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.
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.
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.
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.
Nice! Didn't know one could do this in templates.
There was a problem hiding this comment.
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.mdupdated, or no changelog entry neededdocs/) and code comments, or nodocumentation updates needed