Yes, it is built into the communication model that an inter-canister call is guaranteed to give an answer and indeed this gives a risk you get stuck waiting for a non-responding canister. For this reason the [best practice guidance for secure canister development] (Rust Canister Development Security Best Practices :: Internet Computer) recommends to only talk to trustworthy canisters.
This guidance leaves open the question of how to determine a canister is (and remains) trustworthy and excludes communication with canisters you have not verified. For the former, we have a feature on Verifiable Canisters that may help increase trustworthiness of canisters, and for the second we have a feature proposal for One-shot Messaging. We have started some of the work on Verifiable Canister but the One-shot Messaging feature has not kicked off.
There is also a feature proposal Ensure Canisters Can Always be Upgraded, which targets the specific problem of getting stuck in upgrading. Wonder if this latter would solve your problem, or whether you’d rather see us change the communication model and enable one-shot messaging?
The title of the thread is “the biggest problem with the IC”, it would also be interesting to me whether others share that sentiment, because there is always a priority competition wrt what DFINITY works on.
3 Likes