I’m running into a tricky issue with an SNS-managed canister upgrade and require help with it
The upgrade was initiated via the SNS and reported as executed. However, the actual canister logic was not upgraded. It seems the canister rolled back silently. Unfortunately, no logs were retained from the failed upgrade attempt, which makes it difficult to understand what went wrong
I’ve written and run migration tests using PocketIc, and all of them pass consistently. This makes the issue even more puzzling, because everything behaves as expected in test environments, but fails mysteriously on the IC
Here is the related issue (just adding some context):
So the canister upgrade is a fix for the problem
Has anyone encountered something similar before? Are there any failure modes or debugging strategies for SNS-managed upgrades when no logs are available?
Any guidance or suggestions are greatly appreciated!
Thanks in advance
It can indeed be hard to debug failed SNS-controlled canister upgrades in production. But could you share the canister IDs / SNS name in question, please?
May I ask also, what tool did you use to submit the respective canister upgrade proposals?
We resolved the issue by making the logs public, which revealed that the problem was in the migration code itself. That helped us identify and fix it quickly.
That said, I understand why logs are hidden by default, exposing them publicly can introduce risks. However, for SNS-controlled canisters, we really miss the ability to grant developers access to logs without needing to add them as canister controllers, as that could lower community trust
Regarding your question, the upgrade proposal was submitted via the pipeline using Quill.