Cannot stop canister / outstanding calls / composite queries

Hi, we at Toniq recently updated some of our canisters to use composite queries.

This seemed to work initially and our main collection canisters stopped wasting so many cycles. However, after a few weeks, with couple of these canisters we were unable to stop them normally (only with freezing trick) because outstanding calls.

I wonder if this might be connected to composite queries given that we normally do not have these issues on our other canisters. We didn’t add new composite queries, we just added composite keyword to our well and tried getAssetChunk and http_request functions on our asset canisters and used them as usual in our ‘main’/collection canisters. So not much changed in terms of implementation.

Any ideas if composite queries might indeed cause this somehow? I know its a long shot and pretty vague, but would be cool to hear thoughts on this…



One important difference between queries and composite queries is that the former can be called in replicated mode (i.e. in update calls) but the latter cannot – you’d get an error.
So one possibility to explain the behaviour that you see is that an update call to some query method that succeeded before does not succeed now so the canister that made the call goes in some sort of fail/retry loop, so the canister cannot be stopped normally.