nftpoetrist
2b7eb97fbf
fix(gateway): scope the OpenAI-compat Idempotency-Key cache by profile
...
_run_idempotent() (chat completions / responses) keyed the shared
_idem_cache purely on the client-supplied Idempotency-Key header plus a
body fingerprint, with no profile identity anywhere in the key. Under
gateway.multiplex_profiles, both the native routes and their /p/<profile>/
mirrors share the same process-global cache, so two different profiles'
clients sending the same Idempotency-Key with a matching fingerprint (a
realistic case for automation/SDKs that derive the key deterministically
from request content) silently share a cached response instead of each
profile running its own turn.
The sibling /v1/runs admission API already scopes its own idempotency
namespace this way (_run_idempotency_scope() folds in
_api_request_profile.get() or "default"); this mirrors that exact
expression into _run_idempotent()'s cache key.
2026-09-11 19:37:59 -07:00
..
2026-07-05 06:29:26 -07:00
2026-09-11 19:37:59 -07:00
2026-09-11 14:02:08 +10:00
2026-09-07 06:10:54 -07:00
2026-09-02 19:21:46 -07:00
2026-09-11 03:45:33 +05:30
2026-09-11 15:28:00 -07:00
2026-09-10 10:27:07 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 17:13:22 -07:00
2026-09-02 19:21:46 -07:00
2026-09-03 13:46:50 -07:00
2026-09-02 19:21:46 -07:00
2026-09-11 15:27:23 -07:00
2026-09-11 15:29:15 -07:00
2026-09-07 06:10:54 -07:00
2026-09-03 09:44:26 -07:00
2026-09-02 19:21:46 -07:00
2026-09-02 20:13:08 -07:00
2026-09-07 04:46:20 -07:00
2026-09-07 06:00:05 -07:00
2026-09-04 00:15:16 -07:00
2026-09-02 22:42:55 -07:00
2026-09-03 09:44:26 -07:00
2026-09-11 15:44:00 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 00:09:14 -07:00
2026-09-03 17:13:22 -07:00
2026-09-11 06:21:48 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 13:46:50 -07:00
2026-09-11 06:21:48 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 13:48:14 -07:00
2026-09-07 14:16:57 -07:00
2026-09-04 00:15:16 -07:00
2026-09-02 19:21:46 -07:00
2026-09-11 15:44:00 -07:00
2026-09-11 15:44:00 -07:00
2026-09-02 19:21:46 -07:00
2026-09-02 19:21:46 -07:00
2026-09-04 00:15:16 -07:00
2026-09-02 19:21:46 -07:00
2026-09-03 13:46:50 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 09:44:26 -07:00
2026-09-11 15:28:00 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 09:44:26 -07:00
2026-09-11 19:04:38 -07:00
2026-09-11 15:28:00 -07:00
2026-09-11 15:26:46 -07:00
2026-09-11 15:28:00 -07:00
2026-09-02 16:11:50 -07:00
2026-09-11 15:44:00 -07:00
2026-09-11 11:54:49 -07:00
2026-09-07 14:16:57 -07:00
2026-09-07 14:16:57 -07:00
2026-09-11 15:29:15 -07:00
2026-09-11 15:29:15 -07:00
2026-09-11 15:26:09 -07:00
2026-09-11 15:28:00 -07:00
2026-09-07 22:47:33 +05:30
2026-09-10 10:27:07 -07:00
2026-09-11 15:26:46 -07:00
2026-09-11 15:28:00 -07:00
2026-09-07 06:10:54 -07:00
2026-09-11 15:44:00 -07:00
2026-09-02 21:14:22 -07:00
2026-09-04 15:41:27 -03:00
2026-09-09 10:55:32 -07:00
2026-09-02 19:21:38 -07:00
2026-09-07 06:10:54 -07:00
2026-09-11 15:26:09 -07:00
2026-09-07 14:16:57 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 09:44:26 -07:00
2026-09-07 14:11:18 -07:00
2026-09-11 03:45:33 +05:30
2026-09-03 13:46:50 -07:00
2026-09-07 08:20:09 -07:00
2026-09-03 10:00:07 -07:00
2026-09-03 17:13:22 -07:00
2026-09-10 18:17:22 -07:00
2026-09-11 03:45:33 +05:30
2026-09-07 22:47:33 +05:30
2026-09-11 15:28:00 -07:00
2026-09-11 03:45:33 +05:30
2026-09-11 15:28:00 -07:00
2026-09-03 17:13:22 -07:00
2026-09-02 21:14:22 -07:00
2026-09-11 15:27:23 -07:00
2026-09-11 15:44:00 -07:00
2026-09-08 17:51:35 +10:00
2026-09-02 19:19:38 -07:00
2026-09-02 19:52:43 -07:00
2026-09-08 17:51:35 +10:00
2026-09-08 17:51:35 +10:00
2026-09-04 00:15:16 -07:00
2026-09-02 20:24:52 -07:00
2026-09-09 10:59:52 -07:00
2026-09-03 17:13:22 -07:00
2026-09-07 14:11:18 -07:00
2026-09-03 13:12:50 -07:00
2026-09-09 10:55:32 -07:00
2026-09-03 08:16:44 -07:00