You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(cli-proxy): parse quoted args, raw RESP replies, threaded workers
Three related reliability fixes for the CLI playground proxy, all
visible in the docs site interactive examples and in OpenShift health
probes.
1. Quoted-arg parsing (shlex). Naive str.split() did not respect
quotes, so `SET k "with spaces" EX 60` was tokenized into 9 parts
and Redis returned a syntax error. Replace with shlex.split() which
matches the real redis-cli quoting rules; surface ValueError as a
normal reply rather than letting it 500.
2. Bypass redis-py response_callbacks. The library translates
RESP-level replies into Python types per command — `EXPIRE`/
`SETNX`/`PERSIST` become bool, `SET` becomes True/None, `HGETALL`
becomes dict. The JS frontend (`static/js/cli.js` formatReply)
expects RESP-shaped values: string, int, list, null. Clearing
`client.response_callbacks` makes redis-py return raw values, so
EXPIRE renders as `(integer) 1`/`(integer) 0` instead of mis-mapped
`"OK"`/`"(nil)"`, and HGETALL renders as a flat list like
redis-cli. normalize_result simplified accordingly; the PING
special-case is no longer needed.
3. gthread workers. The Dockerfile used the default sync worker
class with --workers 2, so two concurrent /cli requests fully
blocked /healthz, occasionally tripping the kubelet liveness/
readiness probes (context deadline exceeded). Switch to
--worker-class gthread --threads 4: same 2 processes, 8 concurrent
slots, /healthz never queues behind redis work. Also bump
timeoutSeconds to 3 on both probes for safety margin.
Image rebuilt + pushed as a0533057932/redis-docs-cli with tags
`0.3.3` and `latest` (manifest digest sha256:e22b87bcfe791b,
multi-arch amd64+arm64).
Helm chart bumped 1.5.4 -> 1.5.6; README cli tag refs updated to
0.3.3 in en and he variants.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: helm/redis-docs/README.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -194,7 +194,7 @@ so external URLs an author wrote by hand in markdown remain untouched.
194
194
| `a0533057932/redis-docs` | `<HASH>` / `latest` | 80 | Standard run with `docker run` (privileged) | Yes — one of the two |
195
195
| `a0533057932/redis-docs` | `<HASH>-unprivileged` / `unprivileged` | 8080 | Kubernetes / OpenShift (non-root) | Yes — one of the two |
196
196
| `quay.io/martinhelmich/prometheus-nginxlog-exporter` | `v1.11.0` | 4040 | Prometheus metrics (including response times) | No — only if `metrics.enabled=true` |
197
-
| `a0533057932/redis-docs-cli` | `latest` / `0.3.1` | 8090 | CLI playground proxy (Flask) | No — only if `cli.enabled=true` |
197
+
| `a0533057932/redis-docs-cli` | `latest` / `0.3.3` | 8090 | CLI playground proxy (Flask) | No — only if `cli.enabled=true` |
198
198
| `redis` | `8-alpine` | 6379 | Redis sidecar for CLI playground | No — only if `cli.enabled=true` |
199
199
| `quay.io/jupyter/minimal-notebook` | `2026-04-02` | 8888 | Jupyter kernel server for interactive code execution | No — only if `cli.jupyter.enabled=true` |
0 commit comments