dfinity / interface-spec

IC Interface Specification
https://khsfq-wqaaa-aaaak-qckvq-cai.icp0.io/docs
37 stars 20 forks source link

fix: RUN-926: Re-classify `canister-out-of-cycles` errors as `transient` #279

Closed dfinity-berestovskyy closed 9 months ago

dfinity-berestovskyy commented 9 months ago

When canister balance goes below the freezing threshold, any attempt to execute an update or a query call returns the canister-out-of-cycles error. At the moment this error is classified as a canister error, just like the canister-trap error. The CDK timers library does not retry the timer handler execution on canister error, and hence the timer handler execution might be skipped when canister goes below the freezing threshold.

This MR re-classifies the canister-out-of-cycles error as a transient error, just like the canister-queue-full error. The timers CDK library retries the timer handler execution on transient errors. So with this change, the timer handler execution should be retried, once the canister balance is above the freezing threshold.

mraszyk commented 9 months ago

One more ask: could you please update the changelog?