Make channel-upgrade execute command fully idempotent #171
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Background
The channel-upgrade execute command is basically idempotent. However, since proposed upgrades are deleted once the channel upgrade completes, re-running the command with the target states (UNINIT, UNINIT) failed with:
This behavior caused instability in tests such as: https://github.com/datachainlab/cosmos-ethereum-ibc-lcp/blob/v0.2.24/tests/e2e/cases/tm2eth/scripts/test-channel-upgrade#L122
What changed
To address this, the command now exits with exit code 0 even when no proposed upgrades exist.
Although some users might forget to run the channel-upgrade init command, they will be notified through the newly added log message "both chains have already reached/passed the target states, or the channel upgrade has not been initialized."
I've also confirmed that the cosmos-ethereum-ibc-lcp CI passes: datachainlab/cosmos-ethereum-ibc-lcp#84.
channel-upgrade execute
now immediately exits with status 0 when no proposed upgrades exist