Skip to content

Conversation

abicky
Copy link
Contributor

@abicky abicky commented Aug 1, 2025

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:

Error: channel upgrade is not initialized

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.

⚠️ Breaking changes

  • channel-upgrade execute now immediately exits with status 0 when no proposed upgrades exist
    • Previously exited with status 1
  • The command now exits once upgrade states passed the target states
    • Previously, did not exit until states reached (UNINIT, UNINIT)

@abicky abicky self-assigned this Aug 1, 2025
@abicky abicky force-pushed the make-channel-upgrade-execute-idempotent branch from 94b7ac9 to b4e2b2a Compare August 1, 2025 06:45
@abicky abicky marked this pull request as ready for review August 1, 2025 09:51
@abicky abicky requested a review from a team as a code owner August 1, 2025 09:51
abicky added 2 commits August 1, 2025 19:30
The channel-upgrade execute command is basically idempotent.
However, since proposed upgrades are deleted after the channel
upgrade completes, re-running the command previously failed with
the error: "Error: channel upgrade is not initialized."

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

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.

Signed-off-by: Takeshi Arabiki <takeshi.arabiki@datachain.jp>
Signed-off-by: Takeshi Arabiki <takeshi.arabiki@datachain.jp>
@abicky abicky force-pushed the make-channel-upgrade-execute-idempotent branch from bb56307 to f9b6353 Compare August 1, 2025 10:30
@abicky abicky marked this pull request as draft August 27, 2025 01:45
@abicky abicky force-pushed the make-channel-upgrade-execute-idempotent branch 6 times, most recently from 4dc25ea to f640855 Compare August 29, 2025 02:07
According to the IBC spec
https://github.com/cosmos/ibc/blob/main/spec/core/ics-004-channel-and-packet-semantics/UPGRADES.md#upgrade-handshake,
some states may be skipped during the channel upgrade handshake.
For example, the stat pair (INIT, FLUSHING) may transition
directly to (FLUSHCOMPLETE, FLUSHING) without passing through
FLUSHING from INIT.

Signed-off-by: Takeshi Arabiki <takeshi.arabiki@datachain.jp>
@abicky abicky force-pushed the make-channel-upgrade-execute-idempotent branch from f640855 to 5dd0d0d Compare August 29, 2025 02:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant