| 1234567891011121314151617181920212223242526272829303132333435 |
- -- 005_ws.up.sql
- -- M5: WebSocket ingest + per-IP concurrency cap (SPEC §22 layer 2).
- -- See SPEC §22 milestone rollout — M5 ships layer 2 "obvious once
- -- WS is in".
- --
- -- What lands in M5:
- -- sources.max_concurrent_connections — per-source override for
- -- the in-memory per-IP cap. Default 32 for
- -- WS, 64 for HTTP. The HTTP path's
- -- Server.ConnState callback increments /
- -- decrements the same counter, so the
- -- same column covers both transports.
- --
- -- Why per-source and not per-IP: the SPEC §22 cap is per-IP, but
- -- the config knob is per-source because a single source might be
- -- a multi-tenant gateway (one source_id, many egress IPs). M5
- -- keeps the per-IP default at the source's
- -- `max_concurrent_connections` value. M11 will replace this with
- -- a per-IP-and-per-source intersection in the in-memory map.
- --
- -- What's NOT in M5 (and not supposed to be):
- -- Tail events persistence (M5 is live-only)
- -- Tail auth beyond the static token (M11, security milestone)
- -- Quarantine and circuit breaker (M9)
- -- Per-company tail subscription (M9)
- ALTER TABLE sources
- ADD COLUMN IF NOT EXISTS max_concurrent_connections INTEGER NOT NULL DEFAULT 32;
- -- Same column on companies for the global default (any
- -- per-company sources inherit this if their own is unset; M0
- -- doesn't have a per-company override but the column is
- -- reserved for the M2 routing-rules upgrade).
- ALTER TABLE companies
- ADD COLUMN IF NOT EXISTS max_concurrent_connections INTEGER NOT NULL DEFAULT 64;
|