35 lines
1.6 KiB
Markdown
35 lines
1.6 KiB
Markdown
# Aliyun key hot reload
|
|
|
|
This patch closes two key-rotation gaps in the production Chat API without
|
|
storing any credential in Git:
|
|
|
|
1. `video_gateway_api_key()` prefers a protected `*_API_KEY_FILE` on every
|
|
call, so the AI skill router cannot keep using the startup-cached value.
|
|
2. `CodexAppServerProcess` fingerprints the protected provider key before
|
|
every request. When the file changes and no request is pending, it replaces
|
|
only the persistent Codex child and resumes the existing thread.
|
|
|
|
Production base hashes used by this patch:
|
|
|
|
- `chat_api.py`: `de81004c50a96fdf2e0064340edab213139da6ef304014c1586a4059871a8a1b`
|
|
- `codex_app_server_runtime.py`: `13c4463c6226840ae1a751279b4ec830796fb8cb46e2491f245bbdfebc71dfb9`
|
|
|
|
Deployed hashes on 2026-09-08:
|
|
|
|
- `chat_api.py`: `878e4e0d4c7e5b91190f53b64dccca3154fa3a189ea006d2182d0930a9079c4f`
|
|
- `codex_app_server_runtime.py`: `1ba04cbd15842114c77e89e71c7f36a43a24bc77bac22fd88eeb5d714b573cb3`
|
|
|
|
The deployment was gated on zero queued/running durable tasks and zero real
|
|
Chat API requests in the previous five minutes. A backup was created at
|
|
`/opt/dalongxia-chat-api/backups/aliyun-key-hot-reload-mLOvGl` before the
|
|
service restart.
|
|
|
|
Verification:
|
|
|
|
- the supplied key file fingerprint matched the protected server key file;
|
|
- a direct `qwen3-vl-plus` request returned HTTP 200;
|
|
- the production health endpoint returned HTTP 200 after restart;
|
|
- the next two Codex shadow records completed successfully, while the three
|
|
immediately preceding records had failed with `CodexAppServerError`;
|
|
- no post-deployment `InvalidApiKey` or `API-key is blocked` error appeared.
|