fix(proxy): load team member RPM/TPM from membership budget in combined_view - #24925
Conversation
Join LiteLLM_BudgetTable as b_tm on team membership budget_id and select team_member_tpm_limit / team_member_rpm_limit so virtual key auth populates limits for parallel_request_limiter_v3. Add test_team_member_rate_limits_v3_raises_429_when_over_limit mirroring existing key-level OVER_LIMIT / HTTP 429 coverage. Made-with: Cursor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Greptile SummaryThis PR fixes a missing Changes:
Confidence Score: 5/5Safe to merge — the SQL change is a correct additive LEFT JOIN on an already-defined alias, and the test is a well-structured mock unit test following existing patterns. Both changed files are clean: the SQL JOIN is logically correct (LEFT JOIN on an FK, NULLs handled gracefully), the model fields were already defined, the cast path was already wired up, and the new test follows the established mock-only pattern for this directory. No backward-incompatible changes, no security concerns, no missing migration needed (query-only change). No files require special attention.
|
| Filename | Overview |
|---|---|
| litellm/proxy/utils.py | Adds LEFT JOIN on LiteLLM_BudgetTable aliased as b_tm to populate team_member_tpm_limit and team_member_rpm_limit from the membership budget row in the combined_view SQL query |
| tests/test_litellm/proxy/hooks/test_parallel_request_limiter_v3.py | Adds a mock-only test verifying that when should_rate_limit returns OVER_LIMIT for the team_member descriptor, async_pre_call_hook raises HTTP 429 with correct rate_limit_type and retry-after headers |
Reviews (1): Last reviewed commit: "fix(proxy): include team membership budg..." | Re-trigger Greptile
d1fb63a
into
BerriAI:litellm_oss_staging_04_01_2026
…PM (#24925) Join LiteLLM_BudgetTable as b_tm on team membership budget_id and select team_member_tpm_limit / team_member_rpm_limit so virtual key auth populates limits for parallel_request_limiter_v3. Add test_team_member_rate_limits_v3_raises_429_when_over_limit mirroring existing key-level OVER_LIMIT / HTTP 429 coverage. Made-with: Cursor
…PM (#24925) Join LiteLLM_BudgetTable as b_tm on team membership budget_id and select team_member_tpm_limit / team_member_rpm_limit so virtual key auth populates limits for parallel_request_limiter_v3. Add test_team_member_rate_limits_v3_raises_429_when_over_limit mirroring existing key-level OVER_LIMIT / HTTP 429 coverage. Made-with: Cursor
…PM (BerriAI#24925) Join LiteLLM_BudgetTable as b_tm on team membership budget_id and select team_member_tpm_limit / team_member_rpm_limit so virtual key auth populates limits for parallel_request_limiter_v3. Add test_team_member_rate_limits_v3_raises_429_when_over_limit mirroring existing key-level OVER_LIMIT / HTTP 429 coverage. Made-with: Cursor
…PM (BerriAI#24925) Join LiteLLM_BudgetTable as b_tm on team membership budget_id and select team_member_tpm_limit / team_member_rpm_limit so virtual key auth populates limits for parallel_request_limiter_v3. Add test_team_member_rate_limits_v3_raises_429_when_over_limit mirroring existing key-level OVER_LIMIT / HTTP 429 coverage. Made-with: Cursor
Relevant issues
N/A — fixes virtual keys not receiving per-team-member RPM/TPM from
combined_viewwhen those limits are stored on the team membership budget row (LiteLLM_TeamMembership.budget_id→LiteLLM_BudgetTable).Pre-Submission checklist
Please complete all items before asking a LiteLLM maintainer to review your PR
tests/test_litellm/directory, Adding at least 1 test is a hard requirement - see detailsmake test-unit@greptileaiand received a Confidence Score of at least 4/5 before requesting a maintainer reviewDelays in PR merge?
If you're seeing a delay in your PR being merged, ping the LiteLLM Team on Slack (#pr-review).
CI (LiteLLM team)
Branch creation CI run
Link:
CI run for the last commit
Link:
Merge / cherry-pick CI run
Links:
Type
🐛 Bug Fix
✅ Test
Changes
Problem: The proxy
combined_viewquery joinedLiteLLM_TeamMembershipfor spend but did not join the membership budget table. Per-team-member RPM/TPM configured on the membership budget were not selected, soteam_member_rpm_limit/team_member_tpm_limitwere not populated on virtual key auth andparallel_request_limiter_v3did not enforce those limits.Fix: Add
LEFT JOIN "LiteLLM_BudgetTable" AS b_tm ON tm.budget_id = b_tm.budget_idand selectb_tm.tpm_limit AS team_member_tpm_limit,b_tm.rpm_limit AS team_member_rpm_limitinlitellm/proxy/utils.py(PrismaClientcombined view SQL).Tests: Add
test_team_member_rate_limits_v3_raises_429_when_over_limitintests/test_litellm/proxy/hooks/test_parallel_request_limiter_v3.py, matching the existing pattern for key RPM limits (mockshould_rate_limit→OVER_LIMITforteam_memberdescriptor → assert HTTP 429 and headers).