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.
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 acanister error
, just like thecanister-trap
error. The CDK timers library does not retry the timer handler execution oncanister 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 atransient error
, just like thecanister-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.