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


AI-assisted analysis of xai-org/grok-build@bc7f02eddd (2026-08-31). Data as JSON: /api/errors/9ae2e5c365678ed2. Report an issue: GitHub.