All rate limit buckets for a single entity share the same DynamoDB partition key (namespace/ENTITY#{id}). A high-traffic entity can exceed DynamoDB's per-partition throughput limits (~1,000 WCU/sec), causing throttling that degrades service for that entity — and potentially co-located entities in the same partition.
Each acquire() call performs a TransactWriteItems (or UpdateItem in speculative mode) against items sharing the same partition key. For cascade entities, this doubles to 2-4 writes per request (child + parent). At sustained rates above ~500 req/sec for a single entity, DynamoDB's adaptive capacity may not redistribute fast enough, causing ProvisionedThroughputExceededException.
The library has no built-in mitigation:
- No partition key sharding/salting
- No write coalescing or batching
- No client-side admission control before hitting DynamoDB
- RateLimiterUnavailable is raised but the caller has already been delayed
ThrottledRequests CloudWatch metric increasingacquire() latency spikes and RateLimiterUnavailable exceptionsPK={ns}/BUCKET#{entity}#{resource}#{shard}, SK=#STATE — one partition per (entity, resource, shard)wcu:1000 reserved limit on every bucket — tracks DynamoDB partition write pressure in-band (name may change during implementation)wcu exhaustion or proactively by aggregator#0 is source of truth for shard_count. Aggregator propagates to other shardsoriginal / shard_count. Infrastructure limits (wcu) not dividedwcuwcu from snapshots{
"nvd_published_at": "2026-02-25T15:20:52Z",
"github_reviewed_at": "2026-02-25T22:31:10Z",
"github_reviewed": true,
"severity": "MODERATE",
"cwe_ids": [
"CWE-770"
]
}