Skip to content

fix(sweeper): key threshold cache by TTLPolicy value instead of id()#11

Merged
35C4n0r merged 1 commit into
mainfrom
35C4n0r/fix-threshold-cache-key
May 24, 2026
Merged

fix(sweeper): key threshold cache by TTLPolicy value instead of id()#11
35C4n0r merged 1 commit into
mainfrom
35C4n0r/fix-threshold-cache-key

Conversation

@35C4n0r

@35C4n0r 35C4n0r commented May 24, 2026

Copy link
Copy Markdown
Owner
  • id(policy) returns the CPython memory address, which is reused as soon as the previous policy object is freed; within a single _plan() loop a policy_resolver that creates a fresh TTLPolicy per thread can produce two different policies with the same id(), causing the cache to return thresholds computed for the wrong policy
  • TTLPolicy is a frozen dataclass so it has hash and eq based on its fields; using the policy object itself as the dict key is correct and safe regardless of object identity

- id(policy) returns the CPython memory address, which is reused as soon
  as the previous policy object is freed; within a single _plan() loop a
  policy_resolver that creates a fresh TTLPolicy per thread can produce
  two different policies with the same id(), causing the cache to return
  thresholds computed for the wrong policy
- TTLPolicy is a frozen dataclass so it has __hash__ and __eq__ based on
  its fields; using the policy object itself as the dict key is correct
  and safe regardless of object identity
@35C4n0r 35C4n0r merged commit c32f6ef into main May 24, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant