xai-org/grok-build · error · anyhow::Error
empty response (timeout or closed)
Error message
empty response (timeout or closed)
What it means
Error "empty response (timeout or closed)" thrown in xai-org/grok-build.
Source
Thrown at crates/codegen/xai-fast-worktree/src/nfs/client.rs:554
return false;
}
daemon_flock_free(&self.runtime_dir)
}
fn call(&self, req: &Request, timeout: Duration) -> Result<Response> {
let mut stream = connect_unix(&self.sock, timeout)
.with_context(|| format!("connect {}", self.sock.display()))?;
stream.set_read_timeout(Some(timeout))?;
stream.set_write_timeout(Some(timeout))?;
let mut bytes = serde_json::to_vec(req)?;
bytes.push(b'\n');
stream.write_all(&bytes)?;
let _ = stream.shutdown(std::net::Shutdown::Write);
let mut reader = BufReader::new((&stream).take(MAX_LINE_BYTES));
let mut line = String::new();
reader.read_line(&mut line)?;
if line.is_empty() {
return Err(anyhow!("empty response (timeout or closed)"));
}
Ok(serde_json::from_str(line.trim())?)
}
}
#[derive(Debug, Default)]
pub struct QuerySnapshot {
pub phase: Option<String>,
pub declined: Option<String>,
pub storage_full: bool,
pub unknown: bool,
pub mount: Option<MountInfo>,
}
/// `UnixStream::connect` has no deadline. Non-blocking connect + `poll` so a
/// socket that exists but is not accepting cannot hang ping/create/remove.
fn connect_unix(path: &Path, timeout: Duration) -> Result<UnixStream> {
let bytes = path.as_os_str().as_bytes();View on GitHub (pinned to bc7f02eddd)
When it happens
Trigger: Thrown at crates/codegen/xai-fast-worktree/src/nfs/client.rs:554 when the library encounters an invalid state.
Common situations: See trigger scenarios.
Understand the failure class
- Timeouts: ETIMEDOUT, deadlines, and hung requests — what actually expires when a request times out.
AI-assisted analysis of xai-org/grok-build@bc7f02eddd (2026-08-31).
Data as JSON: /api/errors/9ae2e5c365678ed2.
Report an issue: GitHub.