Motivation
CL.THROTTLE is documented as Dragonfly's native GCRA/leaky-bucket rate-limiting command and returns useful limiter state (limited, limit, remaining, retry-after, reset). In the current implementation, OpThrottle uses mutable access and persists state on the non-limited path, so there does not appear to be a side-effect-free way to ask "would this request be allowed right now?" without updating limiter state or creating state for a missing key. (dragonflydb.io)
Use case
We are building a global rate-limiter service on top of Dragonfly and would like to rely on native CL.THROTTLE for GCRA-style throttling, but we also need probe semantics for:
- dark launches / observe-only mode
- candidate selection across multiple keys before consuming quota
- preflight/debug endpoints that show remaining, retry-after, and reset without mutating state
- safer migration/canary workflows where "would throttle" must not burn quota
Requested behavior
Please add one of the following:
- a new CL.PROBE command with the same arguments and response shape as CL.THROTTLE
- or a READONLY / NOAPPLY mode on CL.THROTTLE
Desired semantics:
- no TAT update
- no TTL refresh
- no key creation for a missing key
- same response shape as CL.THROTTLE
- should work for arbitrary quantity, not only via a special-case workaround
Why this would help
This would make Dragonfly's native throttling much easier to use in higher-level control planes and shared rate-limiter services, where "check" and "consume" are separate operations. It would also make CL.THROTTLE easier to use for observability, dry runs, and staged rollouts.
Backward compatibility
This could be a purely additive feature. Existing CL.THROTTLE behavior would stay unchanged.
Motivation
CL.THROTTLE is documented as Dragonfly's native GCRA/leaky-bucket rate-limiting command and returns useful limiter state (limited, limit, remaining, retry-after, reset). In the current implementation, OpThrottle uses mutable access and persists state on the non-limited path, so there does not appear to be a side-effect-free way to ask "would this request be allowed right now?" without updating limiter state or creating state for a missing key. (dragonflydb.io)
Use case
We are building a global rate-limiter service on top of Dragonfly and would like to rely on native CL.THROTTLE for GCRA-style throttling, but we also need probe semantics for:
Requested behavior
Please add one of the following:
Desired semantics:
Why this would help
This would make Dragonfly's native throttling much easier to use in higher-level control planes and shared rate-limiter services, where "check" and "consume" are separate operations. It would also make CL.THROTTLE easier to use for observability, dry runs, and staged rollouts.
Backward compatibility
This could be a purely additive feature. Existing CL.THROTTLE behavior would stay unchanged.