diff options
| author | user <user@clank> | 2026-08-13 00:04:44 +0200 |
|---|---|---|
| committer | user <user@clank> | 2026-08-13 00:04:44 +0200 |
| commit | cae222e144fefcbe6a6eaa2a3007e8b2b4c9ed95 (patch) | |
| tree | daadb663a14c648311c6d11b69d3dd57467126df /cli/src/core | |
| parent | release: 0.1.1, and stop the CLI carrying a second version (diff) | |
| download | sl0ppi-cae222e144fefcbe6a6eaa2a3007e8b2b4c9ed95.tar.gz sl0ppi-cae222e144fefcbe6a6eaa2a3007e8b2b4c9ed95.tar.xz sl0ppi-cae222e144fefcbe6a6eaa2a3007e8b2b4c9ed95.zip | |
sl0p: stop suspended panes spamming resize errors
Attaching to a session of `start_suspended` panes could drop the client with
"your zellij client lost connection to the zellij server", and `zellij action`
against that live session failed most of the time.
Cause: `set_terminal_size` treats "no fd for this terminal id" as an error, but a
reserved-and-not-yet-started terminal is exactly what `start_suspended` (and any
held pane) is. Resizes arrive in cached bursts (ResizeCache), so every attach and
every layout change logged one formatted, contexted, file-written error PER
suspended pane, on the server's hot path.
The map distinguishes the two cases already -- `Some(None)` is reserved-without-fd
(reserve_terminal_id), `None` is genuinely unknown -- so the fix is to match them
separately and stay quiet about the former.
Measured on a 2-vCPU Debian box, `action list-tabs` against a live session:
before 2 suspended panes 5/12 failed 2 plain panes 1/12 failed
after 2 suspended panes 6/30 failed 2 plain panes 9/30 failed
resize errors logged: 126+ -> 0
ie. the suspended-pane penalty is gone; what remains is a separate baseline
failure rate that affects plain sessions equally (see the known issue in
docs/roadmap.md).
zellij-server: 1499 tests still pass.
Diffstat (limited to 'cli/src/core')
0 files changed, 0 insertions, 0 deletions
