Move Bare Metal Runners over to long lived WebSocket#695
Conversation
🤖 Claude Code ReviewPR: #695 Now I have a comprehensive view of all the changes. Here's the review: PR Review: Runner WebSocket Channel State MachineSummaryThis PR introduces a major architectural refactoring of the runner-server communication protocol. The key changes are:
Positives
IssuesPotential Bugs
Code Quality
Performance
Security
CLAUDE.md Compliance
Minor Nits
VerdictThis is a well-architected refactoring with solid design decisions. The sans-IO pattern is the right call for testability, and the retry semantics are well thought through. The main concerns are around the Model: claude-opus-4-6 |
|
| Branch | u/ep/runner-channel |
| Testbed | ubuntu-22.04 |
Click to view all benchmark results
| Benchmark | Latency | Benchmark Result microseconds (µs) (Result Δ%) | Upper Boundary microseconds (µs) (Limit %) |
|---|---|---|---|
| Adapter::Json | 📈 view plot 🚷 view threshold | 3.83 µs(+11.19%)Baseline: 3.44 µs | 4.62 µs (82.84%) |
| Adapter::Magic (JSON) | 📈 view plot 🚷 view threshold | 3.83 µs(+11.67%)Baseline: 3.43 µs | 4.52 µs (84.65%) |
| Adapter::Magic (Rust) | 📈 view plot 🚷 view threshold | 25.91 µs(+1.12%)Baseline: 25.62 µs | 31.03 µs (83.49%) |
| Adapter::Rust | 📈 view plot 🚷 view threshold | 3.09 µs(+8.36%)Baseline: 2.85 µs | 3.35 µs (92.31%) |
| Adapter::RustBench | 📈 view plot 🚷 view threshold | 3.09 µs(+8.36%)Baseline: 2.85 µs | 3.33 µs (92.74%) |
| head_version_insert/batch/10 | 📈 view plot 🚷 view threshold | 108.37 µs(+8.32%)Baseline: 100.05 µs | 121.84 µs (88.94%) |
| head_version_insert/batch/100 | 📈 view plot 🚷 view threshold | 249.43 µs(+5.09%)Baseline: 237.35 µs | 268.89 µs (92.76%) |
| head_version_insert/batch/255 | 📈 view plot 🚷 view threshold | 471.85 µs(+2.30%)Baseline: 461.24 µs | 493.91 µs (95.53%) |
| head_version_insert/batch/50 | 📈 view plot 🚷 view threshold | 168.72 µs(+5.09%)Baseline: 160.54 µs | 184.25 µs (91.57%) |
| threshold_query/join/10 | 📈 view plot 🚷 view threshold | 160.13 µs(+10.93%)Baseline: 144.35 µs | 171.39 µs (93.43%) |
| threshold_query/join/20 | 📈 view plot 🚷 view threshold | 176.24 µs(+11.10%)Baseline: 158.63 µs | 187.90 µs (93.79%) |
| threshold_query/join/5 | 📈 view plot 🚷 view threshold | 149.23 µs(+9.55%)Baseline: 136.22 µs | 160.29 µs (93.10%) |
| threshold_query/join/50 | 📈 view plot 🚷 view threshold | 220.12 µs(+9.95%)Baseline: 200.20 µs | 235.38 µs (93.52%) |
a973c51 to
9dcac55
Compare
9dcac55 to
e4f90aa
Compare
This changeset moves from using an HTTP long poll + per job WebSocket connection to using a single persistent WebSocket connection for each bare metal runner.