Improve zellij exit to reduce error #2994
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently, when zellij exits, a number of errors are printed in the logs, such as the following error.
rors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/zellij-utils-0.39.1/src/errors.rs:632]: Panic occured: thread: screen location: At /home/wjd/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/zellij-server-0.39.1/src/lib.rs:817:18 message: Program terminates: a fatal error occured Caused by: 0: failed to remove client 1 1: Failed to log and report session state 2: failed to send message to background jobs 3: Originating Thread(s) 1. stdin_handler_thread: AcceptInput 2. ipc_server: ClientExit 3. screen_thread: RemoveClient 4: failed to send message to channel
This may lead the user to believe that a panic has occurred, but it does not actually affect usage.
Since there are multiple loops in zellij (server, screen, pty, plugin) and they async communicate through channels, the order in which the loops are closed may affect the errors.
This PR optimizes the stop logic of zellij to minimize the occurrence of errors.