tinyhumansai/openhuman · error
join error: {e}
Error message
join error: {e} What it means
A spawn_blocking task that persists a Telegram remote-control thread binding (set_binding on the channel store) failed at join: the blocking task panicked or was cancelled, so the binding write never completed or its result is unknowable. Distinct from a store error, which would surface through the Result inside the closure.
Source
Thrown at src/openhuman/channels/providers/telegram/remote_control.rs:264
let workspace_dir = ctx.workspace_dir.clone();
let reply_target_owned = msg.reply_target.clone();
let thread_id_owned = thread_id.clone();
let sender_key_owned = sender_key.clone();
let title_owned = title.clone();
// Write-back path — use with_store (saves) wrapped in spawn_blocking.
let bind_result = tokio::task::spawn_blocking(move || {
with_store(&workspace_dir, |store| {
store.set_binding(
&reply_target_owned,
thread_id_owned,
sender_key_owned,
Some(title_owned),
);
Ok(())
})
})
.await
.unwrap_or_else(|e| Err(anyhow::anyhow!("join error: {e}")));
if let Err(error) = bind_result {
tracing::warn!("{LOG_PREFIX} new: persist binding failed: {error}");
return format!(
"Created thread `{thread_id}` but failed to persist Telegram binding: {error}"
);
}
crate::openhuman::web_chat::invalidate_thread_sessions(&thread_id).await;
tracing::info!(
"{LOG_PREFIX} new session thread_id={thread_id} reply_target={} sender_key={sender_key}",
msg.reply_target
);
format!(
"Started new session **{title}**.\n\
Thread id: `{thread_id}`\n\View on GitHub (pinned to 7491200858)
Solutions
- Check logs for the panic inside the blocking closure (store lock, serialize)
- Retry the binding write; a one-off panic is usually transient
- Investigate store corruption if the panic reproduces
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at src/openhuman/channels/providers/telegram/remote_control.rs:264 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/a361e3995396c678.
Report an issue: GitHub.