Commit 4276287
committed
fix(router): scope clientside-credential deployments per-key + prune stale ones
A request carrying a clientside api_key gets a synthetic per-key deployment
upserted into the shared Router model_list (under the public model group name,
team_id=None). Two defects followed (upstream PR BerriAI#8966; upstream issue BerriAI#17115,
auto-closed stale; reproduced as JuliaHub BerriAI#22864):
1. Cross-user key leak: a later request with NO key could be load-balanced
(simple-shuffle) onto that synthetic deployment and reuse the first caller's
key upstream.
2. Unbounded growth: each distinct key appended a permanent entry, never removed.
Fix:
- Tag synthetic deployments (model_info["clientside_credential"]) and add
is_clientside_credential_deployment().
- In _common_checks_available_deployment, scope selection per-key: a request
with no clientside credential sees only config deployments; a request with one
sees config deployments plus only its own matching synthetic.
- Opportunistically prune (throttled, synchronous, race-free on the event loop)
synthetic deployments idle past an env-configurable TTL, with an LRU max-count
backstop, on each keyed request via _handle_clientside_credential.
Adds deterministic regression tests for both the leak and the prune.1 parent 00d60de commit 4276287
3 files changed
Lines changed: 189 additions & 0 deletions
File tree
- litellm
- router_utils
- tests/local_testing
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| 17 | + | |
17 | 18 | | |
18 | 19 | | |
19 | 20 | | |
| |||
105 | 106 | | |
106 | 107 | | |
107 | 108 | | |
| 109 | + | |
108 | 110 | | |
109 | 111 | | |
| 112 | + | |
110 | 113 | | |
111 | 114 | | |
112 | 115 | | |
| |||
519 | 522 | | |
520 | 523 | | |
521 | 524 | | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
522 | 538 | | |
523 | 539 | | |
524 | 540 | | |
| |||
2908 | 2924 | | |
2909 | 2925 | | |
2910 | 2926 | | |
| 2927 | + | |
2911 | 2928 | | |
2912 | 2929 | | |
2913 | 2930 | | |
2914 | 2931 | | |
2915 | 2932 | | |
2916 | 2933 | | |
| 2934 | + | |
| 2935 | + | |
| 2936 | + | |
| 2937 | + | |
2917 | 2938 | | |
2918 | 2939 | | |
2919 | 2940 | | |
| |||
8257 | 8278 | | |
8258 | 8279 | | |
8259 | 8280 | | |
| 8281 | + | |
| 8282 | + | |
| 8283 | + | |
| 8284 | + | |
| 8285 | + | |
| 8286 | + | |
| 8287 | + | |
| 8288 | + | |
| 8289 | + | |
| 8290 | + | |
| 8291 | + | |
| 8292 | + | |
| 8293 | + | |
| 8294 | + | |
| 8295 | + | |
| 8296 | + | |
| 8297 | + | |
| 8298 | + | |
| 8299 | + | |
| 8300 | + | |
| 8301 | + | |
| 8302 | + | |
| 8303 | + | |
| 8304 | + | |
| 8305 | + | |
| 8306 | + | |
| 8307 | + | |
| 8308 | + | |
| 8309 | + | |
| 8310 | + | |
| 8311 | + | |
| 8312 | + | |
| 8313 | + | |
| 8314 | + | |
| 8315 | + | |
| 8316 | + | |
| 8317 | + | |
| 8318 | + | |
| 8319 | + | |
8260 | 8320 | | |
8261 | 8321 | | |
8262 | 8322 | | |
| |||
10112 | 10172 | | |
10113 | 10173 | | |
10114 | 10174 | | |
| 10175 | + | |
| 10176 | + | |
| 10177 | + | |
| 10178 | + | |
| 10179 | + | |
| 10180 | + | |
| 10181 | + | |
| 10182 | + | |
| 10183 | + | |
| 10184 | + | |
| 10185 | + | |
| 10186 | + | |
| 10187 | + | |
| 10188 | + | |
| 10189 | + | |
| 10190 | + | |
| 10191 | + | |
| 10192 | + | |
| 10193 | + | |
| 10194 | + | |
| 10195 | + | |
| 10196 | + | |
| 10197 | + | |
10115 | 10198 | | |
10116 | 10199 | | |
10117 | 10200 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
76 | 91 | | |
77 | 92 | | |
78 | 93 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
427 | 427 | | |
428 | 428 | | |
429 | 429 | | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
430 | 521 | | |
431 | 522 | | |
432 | 523 | | |
| |||
0 commit comments