-
Couldn't load subscription status.
- Fork 1k
Description
Is there an existing issue?
- I have searched the existing issues
Experiencing problems? Have you tried our Stack Exchange first?
- This is not a support question.
Description of bug
When auto-renewal fails due to insufficient funds, the system disables the auto-renewal setting entirely and requires manual re-enablement. However, the documentation states:
"Even if an auto-renewal attempt fails, the auto-renewal setting remains active for subsequent sales. This means the setting persists across multiple periods once you've configured auto-renewal."
The actual behavior contradicts the documentation. This could create governance overhead to re-enable auto-renewal and risks missing renewal windows. We expected auto-renewal to remain enabled and retry on the next cycle as documented, not disable itself after payment failures.
The behavior likely stems from the broker pallet logic when checking Sovereign account funds, where failed renewal attempts return None disabling the auto-renewal setting.
polkadot-sdk/substrate/frame/broker/src/tick_impls.rs
Lines 354 to 360 in 13320f3
| let Some(payer) = T::SovereignAccountOf::maybe_convert(record.task) else { | |
| Self::deposit_event(Event::<T>::AutoRenewalFailed { | |
| core: record.core, | |
| payer: None, | |
| }); | |
| return None | |
| }; |
Is this disable-on-failure behavior intentional, or should it match the documented behavior where auto-renewal persists through payment failures?
Steps to reproduce
- Enable auto-renewal on a core
- Ensure Sovereign account has insufficient funds for renewal
- Wait for the renewal attempt at the beginning of the new sales period
- Observe auto-renewal setting becomes disabled