{"record":{"id":"ba473dbe24e32cce","repo":"xai-org/grok-build","slug":"worktree-creation-task-failed-e","errorCode":null,"errorMessage":"worktree creation task failed: {e}","messagePattern":"worktree creation task failed: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/codegen/xai-grok-shell/src/session/worktree.rs","lineNumber":514,"sourceCode":"        let session_id = req.session_id.clone();\n        let btrfs_delegate = btrfs_delegate_from_env();\n        tokio::task::spawn_blocking(move || {\n            use xai_fast_worktree::{\n                CreationMode, IgnoredFilesMode, WorkingTreeMode, WorktreeBuilder,\n            };\n            let mut builder = WorktreeBuilder::new(&source, &dest)\n                .working_tree_mode(WorkingTreeMode::CleanAll)\n                .ignored_files_mode(IgnoredFilesMode::Skip)\n                .creation_mode(CreationMode::Linked)\n                .worktree_kind(xai_fast_worktree::WorktreeKind::Fork)\n                .session_id(session_id);\n            if let Some(delegate) = btrfs_delegate {\n                builder = builder.btrfs_delegate(delegate);\n            }\n            builder.create()\n        })\n        .await\n        .map_err(|e| anyhow::anyhow!(\"worktree creation task failed: {e}\"))??;\n    }\n    let client = registry_client.ok_or_else(|| {\n        anyhow::anyhow!(\n            \"Session registry client is required for rehydration \\\n             (auth may be missing or registry is disabled)\"\n        )\n    })?;\n    let record = client\n        .get_session(&req.session_id)\n        .await\n        .context(\"fetching session record for rehydration\")?;\n    let turn = crate::session::restore::resolve_restore_turn(&record, None);\n    let memory_dl_future = crate::session::restore::download_to_tempfile(\n        client,\n        &req.session_id,\n        \"memory.tar.gz\",\n        turn,\n    );","sourceCodeStart":496,"sourceCodeEnd":532,"githubUrl":"https://github.com/xai-org/grok-build/blob/bc7f02eddd3d84085849dc19ed216f11c23b0571/crates/codegen/xai-grok-shell/src/session/worktree.rs#L496-L532","documentation":"rehydrate_session_in_worktree spawns worktree creation (possibly with a btrfs delegate) on a blocking/async builder inside an async block; if the spawned task returns Err it is wrapped with this message. The `??` then propagates the inner worktree error. Root cause is inside the worktree creation task (git operation, filesystem, btrfs delegate failure).","triggerScenarios":"Calling rehydrate_session_in_worktree when the spawned `builder.create()` future/task returns an error (git worktree add failure, path already exists, filesystem error, btrfs delegate failure).","commonSituations":"Rehydrating a session onto a disk with insufficient space, a stale worktree path left by a previous crashed run, or a broken btrfs setup.","solutions":["Inspect the inner error chained after this message (the `??` preserves the source) and fix the underlying git/filesystem issue.","Remove any stale worktree at the target path (git worktree prune / delete leftover directory) and retry.","Check disk space and mount health for the worktree parent directory.","If using btrfs_delegate, verify the btrfs filesystem and delegate are functional, or run without the delegate."],"exampleFix":"// before\nbuilder.create()\n// after — fail fast with a clearer cause and clean stale path\nif Path::new(&wt_path).exists() {\n    tokio::fs::remove_dir_all(&wt_path).await.ok();\n}\nbuilder.create().await.map_err(|e| anyhow!(\"worktree creation task failed: {e:#}\"))?","handlingStrategy":"retry","validationCode":"let wt = std::path::Path::new(&wt_path);\nif wt.exists() {\n    return Err(anyhow!(\"worktree path {} already exists; clean up first\", wt.display()));\n}\n// also check free space\nlet stat = nix::sys::statvfs::statvfs(wt.parent().unwrap())?;\nif stat.blocks_available() < MIN_FREE_BLOCKS { return Err(anyhow!(\"insufficient disk space\")); }","typeGuard":null,"tryCatchPattern":"match rehydrate_session_in_worktree(req).await {\n    Err(e) if e.to_string().contains(\"worktree creation task failed\") => {\n        cleanup_stale_worktree(&req.worktree_path).await;\n        rehydrate_session_in_worktree(req).await // one retry after cleanup\n    }\n    other => other,\n}","preventionTips":["Prune stale git worktrees (git worktree prune) before rehydration","Monitor disk space on the worktree parent volume","Verify btrfs delegate health or disable it when flaky","Use unique per-attempt worktree paths to avoid collisions"],"tags":["rust","worktree","git","filesystem"],"backgroundTag":"worktree-creation-failed","analyzedSha":"bc7f02eddd3d84085849dc19ed216f11c23b0571","analyzedAt":"2026-08-31T04:59:42.031Z","schemaVersion":2},"datasetVersion":"2026-08-31T09:17:48.483Z"}