Failed Canister Upgrade via Proposal

Hey everyone,

We encountered an issue with a proposal to upgrade a canister.

Canister ID: 7eikv-2iaaa-aaaag-qdgwa-cai
Proposal: https://dashboard.internetcomputer.org/sns/csyra-haaaa-aaaaq-aacva-cai/proposal/87

According to the dashboard, the proposal was approved and executed. However, we noticed that the upgrade did not actually succeed. The canister’s module hash does not match the module hash in the proposal.

Has anyone else encountered this issue? Thanks!

Hope you all have a great weekend!

Hi. I’m looking into this and will let you know what I discover. As far as I can tell you’re correct about the upgrade not succeeding despite SNS Governance thinking that the proposal didn’t fail.

1 Like

Hello Andre. Thanks for your help!

Hi. When the UpgradeSnsControlledCanister proposal is adopted, governance tells root to upgrade the canister. When root receives, this it will reply to the governance immediately (before waiting for the upgrade to go through) and the governance will record this as “executed”. So executed just means that root successfully received the message but it is independent on whether the upgrade later failed or not.

Unfortunately there was an oversight in root’s logging of this operation, which caused the logs to get written to the replica logs (difficult to access) instead of the canister logs (easy to access).

I’ve implemented some changes to improve this that will be included in DFINITY’s next proposal to publish a new version of SNS root to SNS-WASM. The new version causes root to write the output of the upgrade to the canister logs in addition to the replica logs.

If the proposed change is accepted by the NNS, the ICPSwap SNS could upgrade to the new version and try upgrading the dapp canister again with the advantage of better logging. At that point it would be much easier to see what’s going wrong with the upgrade.

5 Likes

Hello Andre. Thank you very much for your solution and hard work!