Skip to content

Conversation

@beer-1
Copy link
Contributor

@beer-1 beer-1 commented Nov 5, 2025

Description

When removing an entry from the expiration queue, x/feegrant uses the key with the granter/grantee inverted. The correct key is feegrant.FeeAllowanceKey(granter, grantee), not feegrant.FeeAllowanceKey(grantee, granter). This prevents proper deletion of the allowance entry.

Patch-style hint

- key := feegrant.FeeAllowanceKey(grantee, granter)
+ key := feegrant.FeeAllowanceKey(granter, grantee)

Impact

Expiration not actually removed for the prior grant.
Recreated grant can be deleted later by the leftover (stale) expiration event.

!!!!!! consensus breaking !!!!!!

@aljo242 aljo242 changed the title fix: clear expiration queues on revoke fix!: clear expiration queues on revoke Nov 5, 2025
@aljo242
Copy link
Contributor

aljo242 commented Nov 13, 2025

can you target this PR against main and backport from there?

@beer-1
Copy link
Contributor Author

beer-1 commented Nov 13, 2025

@aljo242 but there is no problem in main branch after updating x/feegrant to use collection

@aljo242
Copy link
Contributor

aljo242 commented Nov 14, 2025

@beer-1 can we document how this is state breaking? and how folks who have x/feegrant integrated should go about upgrading

@beer-1
Copy link
Contributor Author

beer-1 commented Nov 14, 2025

@beer-1 can we document how this is state breaking? and how folks who have x/feegrant integrated should go about upgrading

Yea sure. Can you let me know where should I put that docs part? Changelog?
for now, added in changelog

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants