Azure / Azure/azure-sdk-for-rust

[Cosmos] Client-side throughput control

Open
#4,089 0 comments 0 reactions 0 assignees View on GitHub
Client Cosmos
Dominant language
Rust
Stars
884
Forks
365
Avg merge
2d 19h
Merged PRs (30d)
109

Description

## Summary

Add client-side throughput control to the Cosmos Rust SDK, complementing the server-side features (priority-based execution and throughput buckets) shipped in #4078.

## Scope

Re-introduce the `ClientSide` variant to `ThroughputControlGroupOptions` (removed in #4078 for GA, enum is `#[non_exhaustive]`):

- **`ThroughputTarget`** enum — `Absolute(u32)` for fixed RU/s limits, `Threshold(f64)` for percentage of provisioned throughput
- **Client-side rate limiter** — SDK-enforced request rate limiting before sending to the service
- **Optional priority level** — combine with client-side throttling for local prioritization

## References

- Java SDK: [`ThroughputControlGroupConfigBuilder`](https://learn.microsoft.com/en-us/java/api/com.azure.cosmos.ThroughputControlGroupConfigBuilder)
- Parent issue: #3904
- Server-side implementation: #4078

Contributor guide

Open the contributing guide

Research direction

Start by reading the server-side implementation in #4078 and the parent issue #3904 to understand the existing throughput-control model. Compare the requested client-side behavior with the Java SDK's ThroughputControlGroupConfigBuilder reference. Done means the Rust SDK supports client-side targets, rate limiting before service requests, and optional priority handling.

Written by the indexing model from the issue text.

Assessment

Tech stack
azure, rust
Domain
api, performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.