Skip to content

fix(ws): filter the websockets handshake-probe traceback flood#250

Draft
emranemran wants to merge 1 commit into
mainfrom
fix/quiet-ws-handshake-probe-noise
Draft

fix(ws): filter the websockets handshake-probe traceback flood#250
emranemran wants to merge 1 commit into
mainfrom
fix/quiet-ws-handshake-probe-noise

Conversation

@emranemran

Copy link
Copy Markdown
Contributor

⚠️ Draft. Pairs with the vae_nodes logging cleanup (#249) — land both in the same :warm bake.

TL;DR ⚡

Non-WebSocket connections flood the log with opening handshake failed tracebacks. Drop that one record.

The noise 🔊

  • Health probes / port scanners / the tunnel's TCP checks hit :8765 without a valid WS request.
  • websockets logs a full InvalidMessage/EOFError traceback per hit → ~2,030 per pod per session.
  • They fail before _process_request, so the HTTP short-circuit can't catch them.

The fix ✅

A small logging.Filter on the websockets.server logger that drops records whose message is exactly opening handshake failed. The record is logged on that logger directly (no per-connection child), so one filter catches all — traceback included.

Safe by design 🛡️

  • Real handler errors log a different message (connection handler failed) → still surface.
  • Verified with a standalone test: noise dropped, real errors kept.

Deploy note 📦

DEMON server code → needs a :warm re-bake to hit the fleet.

🤖 Generated with Claude Code

Non-WebSocket connections to the port (health probes, port scanners, the
tunnel's TCP checks) fail the WS handshake and websockets logs a full
InvalidMessage/EOFError traceback — ~2k per pod per session of pure noise.
They fail before `_process_request`, so the HTTP short-circuit can't catch
them. Add a logging.Filter on the `websockets.server` logger that drops the
`opening handshake failed` record (logged on that logger directly, no
per-connection child, so one filter catches all). Real handler failures log
a different message (`connection handler failed`) and still surface.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant