Calculate plan allowance availability per current subscription cycle (instead of user-wide) #3922
+68
−8
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Prevents older cycle leftovers from being spent against the current cycle and going negative.
This fix came as a result of observing Luke's monthly balance going below zero - it looks like the previous subscription period's monthly credits for some reason did not get expired (we do expire unused monthly credits at the beginning of a new subscription cycle), which caused our credit spending logic to think there are more monthly credits available than there actually are. If we scope the query to the current subscription period, the issue is solved.
The actual reason for the unexpired monthly credits is unclear to me. Given that Luke's account balance recovered OK with the newest monthly cycle, my hypothesis is that something went wrong with processing of the stripe's monthly subscription webhook, maybe there was an outage or something similar (having retryable event processing jobs would be helpful). Another option is that manual ledger entries had something to do with it. I suggest for now it's not worth exploring this deeper since other accounts are working OK.