Repository navigation
openrot v0.2.10
What's New
Wait for in-progress rotation instead of skipping
When the bridge hits a retryable upstream status (e.g. 429) it rotates the cascade before retrying. Previously, if two requests hit the limit at the same time, the second one would find a rotation already in progress and skip its own rotation — then retry against the still-rate-limited node and fail with an error.
Now rotation uses a competition flag:
- The first caller performs the rotation (as before).
- Concurrent callers wait for that rotation to finish, then retry against the freshly-rotated node — no error is returned, no second rotation is started.
So a burst of parallel 429s is handled by a single rotation, and every request gets a retry on a healthy node.
Rotation timing context in logs
The bridge now logs whether it actually rotated or waited on an in-progress rotation, with the elapsed time:
INFO [warp] rotation took 0.4s
INFO [warp] waited 0.3s for in-progress rotation
Bug Fixes
- Fix
UnboundLocalErrorin the bridge retry path whenrotate()bails out (no alive node) before assigning the rotation result.
Full Changelog: v0.2.9...v0.2.10