mirror of
https://github.com/PerpetualSoftware/pad.git
synced 2026-10-26 22:37:03 +00:00
c50f0585ad
* fix(collab): WebSocket dials get their own per-user bucket and a per-user socket cap; the web provider jitters its reconnects (BUG-1308) A collab dial drew on the general per-user API bucket (burst 60), so 100 dials from one user got 60 through, and a user's own dials and REST calls refused each other. Dials now draw on a CollabDial bucket (5/s, burst 50), and how many sockets a principal may hold is bounded separately by PAD_COLLAB_MAX_PER_USER (default 50), refused with 429 collab_limit_exceeded and Retry-After. Both defaults are sized from the reconnect-storm measurement on BUG-1308's trail (checkpoint 2). A browser cannot read a refused handshake's status, so the provider's backoff is what spaces a refused herd out: each step is now jittered to between half and all of itself. Claude-Session: https://claude.ai/code/session_01RYiqbqXmxQMoKHsGm8B77N * docs(collab): PAD_COLLAB_MAX_PER_USER and the collab dial bucket, in the deployment docs, samples and load-test usage (BUG-1308) Claude-Session: https://claude.ai/code/session_01RYiqbqXmxQMoKHsGm8B77N * fix(collab): only a WebSocket upgrade is a dial; per-user cap pinned within one workspace; dial-bucket keying stated correctly (BUG-1308, codex round 1) Claude-Session: https://claude.ai/code/session_01RYiqbqXmxQMoKHsGm8B77N * docs(collab): a PAD_COLLAB_MAX_PER_USER below 1 means unlimited, as the SSE knobs do (BUG-1308, codex round 2) Claude-Session: https://claude.ai/code/session_01RYiqbqXmxQMoKHsGm8B77N * docs(collab): the struct field agrees, 0 or less is unlimited (BUG-1308, codex round 3) Claude-Session: https://claude.ai/code/session_01RYiqbqXmxQMoKHsGm8B77N
27 lines
873 B
YAML
27 lines
873 B
YAML
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: pad-config
|
|
namespace: pad
|
|
data:
|
|
PAD_HOST: "0.0.0.0"
|
|
PAD_PORT: "7777"
|
|
PAD_DB_DRIVER: "postgres"
|
|
PAD_DATA_DIR: "/data"
|
|
PAD_LOG_LEVEL: "info"
|
|
PAD_SECURE_COOKIES: "true"
|
|
# Covers BOTH /api/v1/events and /api/v1/events/stream (BUG-2726).
|
|
PAD_SSE_MAX_CONNECTIONS: "1000"
|
|
PAD_SSE_MAX_PER_WORKSPACE: "100"
|
|
PAD_SSE_MAX_PER_USER: "50"
|
|
# Open collab WebSockets per user, per instance (BUG-1308).
|
|
PAD_COLLAB_MAX_PER_USER: "50"
|
|
# Set when this Redis endpoint is shared with another Pad installation.
|
|
# Empty/unset keeps the historical key names. Changing it on a running
|
|
# deployment makes connected clients resync — see docs/deployment.md.
|
|
# PAD_REDIS_NAMESPACE: "prod"
|
|
# Set your public URL:
|
|
# PAD_URL: "https://pad.example.com"
|
|
# CORS origins:
|
|
# PAD_CORS_ORIGINS: "https://pad.example.com"
|