{"record":{"id":"541c10408424fa9b","repo":"zellij-org/zellij","slug":"found-no-sender-to-send-plugin-instruction-to","errorCode":null,"errorMessage":"found no sender to send plugin instruction to","messagePattern":"found no sender to send plugin instruction to","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"zellij-server/src/plugins/zellij_exports.rs","lineNumber":2495,"sourceCode":"        })\n        .non_fatal();\n}\n\nfn set_timeout(env: &PluginEnv, secs: f64) {\n    let send_plugin_instructions = env.senders.to_plugin.clone();\n    let update_target = Some(env.plugin_id);\n    let client_id = env.client_id;\n    let plugin_name = env.name();\n    // Use tokio runtime for async I/O (timer operation)\n    get_tokio_runtime().spawn(async move {\n        let start_time = Instant::now();\n        tokio::time::sleep(Duration::from_secs_f64(secs)).await;\n        // FIXME: The way that elapsed time is being calculated here is not exact; it doesn't take into account the\n        // time it takes an event to actually reach the plugin after it's sent to the `wasm` thread.\n        let elapsed_time = Instant::now().duration_since(start_time).as_secs_f64();\n\n        send_plugin_instructions\n            .ok_or(anyhow!(\"found no sender to send plugin instruction to\"))\n            .and_then(|sender| {\n                sender\n                    .send(PluginInstruction::Update(vec![(\n                        update_target,\n                        Some(client_id),\n                        Event::Timer(elapsed_time),\n                    )]))\n                    .to_anyhow()\n            })\n            .with_context(|| {\n                format!(\n                    \"failed to set host timeout of {secs} s for plugin {}\",\n                    plugin_name\n                )\n            })\n            .non_fatal();\n    });\n}","sourceCodeStart":2477,"sourceCodeEnd":2513,"githubUrl":"https://github.com/zellij-org/zellij/blob/5cb5df5cce4e16c5d1c57c7c062e4a90a7823c41/zellij-server/src/plugins/zellij_exports.rs#L2477-L2513","documentation":"Error \"found no sender to send plugin instruction to\" thrown in zellij-org/zellij.","triggerScenarios":"Occurs at zellij-server/src/plugins/zellij_exports.rs:2495 when the operation fails: \"found no sender to send plugin instruction to\". Currently there is no defensive handling preventing or contextualizing this failure before it surfaces.","commonSituations":"Typically happens during shutdown or crash of a companion thread.","solutions":["The receiving end has shut down; ensure the component is alive before sending.","Treat this as a shutdown race; retry after restart or report if reproducible."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5cb5df5cce4e16c5d1c57c7c062e4a90a7823c41","analyzedAt":"2026-08-19T07:42:58.758Z","contentChangedAt":"2026-08-19T07:42:58.758Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}