{"record":{"id":"b0b01ebd0090c764","repo":"astrid-runtime/astrid","slug":"mountpoint-is-already-registered","errorCode":null,"errorMessage":"mountpoint is already registered: {}","messagePattern":"mountpoint is already registered: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/astrid-storage-provider-fskit/src/main.rs","lineNumber":185,"sourceCode":"    client: &mut AdminClient,\n    acting_principal: &astrid_core::PrincipalId,\n    view: astrid_core::storage_provider::StorageProviderViewV1,\n    access: astrid_core::storage_provider::StorageProviderAccessV1,\n    requested_mountpoint: Option<PathBuf>,\n) -> Result<StorageProviderSuccessV1> {\n    let (mountpoint, auto_created) = prepare_mountpoint(requested_mountpoint, &view)?;\n    let body = client\n        .request(AdminRequestKind::StorageMountIssue {\n            view: view.clone(),\n            access,\n            provider: PROVIDER_NAME.to_owned(),\n            mountpoint: mountpoint.clone(),\n        })\n        .await?;\n    let lease = lease_from_response(body)?;\n    if let Err(error) = update_registry(|registry| {\n        if registry.mounts.contains_key(&path_key(&mountpoint)) {\n            bail!(\"mountpoint is already registered: {}\", mountpoint.display());\n        }\n        registry.mounts.insert(\n            path_key(&mountpoint),\n            MountRecord {\n                mount_id: lease.mount_id,\n                requested_by: acting_principal.clone(),\n                mountpoint: mountpoint.clone(),\n                access,\n                auto_created_mountpoint: auto_created,\n            },\n        );\n        Ok(())\n    }) {\n        revoke_after_registry_failure(client, lease.mount_id).await;\n        return match cleanup_created_mountpoint(&mountpoint, auto_created) {\n            Err(cleanup) => Err(error.context(cleanup)),\n            Ok(()) => Err(error),\n        };","sourceCodeStart":167,"sourceCodeEnd":203,"githubUrl":"https://github.com/astrid-runtime/astrid/blob/affd8760f44190dbdfbec23403f4c4b642c33112/crates/astrid-storage-provider-fskit/src/main.rs#L167-L203","documentation":"mount() registers a MountRecord in the local registry after the kernel grants a lease. Before inserting, it checks whether the mountpoint is already registered and bails to avoid silently overwriting an existing mount record for the same path.","triggerScenarios":"Calling execute() with a mount request whose mountpoint path (after path_key normalization) matches an existing entry in registry.mounts.","commonSituations":"Re-running a mount command for an already-mounted path; case/symlink normalization differences making two textual paths map to the same key; a previous mount that was granted but never cleaned up.","solutions":["Unmount the existing mount at that path before mounting again","Choose a different mountpoint path","If the record is stale, use the stale-mount cleanup/unmount path to remove it first"],"exampleFix":"// before\nprovider.mount(\"/mnt/share\", ...)?; // second call\n// after\nif !is_mounted(\"/mnt/share\") {\n    provider.mount(\"/mnt/share\", ...)?;\n}","handlingStrategy":"try-catch","validationCode":"// rust\nlet key = path_key(&mountpoint);\nif registry_has_mount(key) { /* unmount first or pick another path */ }","typeGuard":null,"tryCatchPattern":"// rust\nmatch provider.mount(&mountpoint, &opts) {\n    Ok(lease) => /* use lease */,\n    Err(e) if e.to_string().contains(\"already registered\") => {\n        provider.unmount(&mountpoint)?;\n        provider.mount(&mountpoint, &opts)\n    }\n    Err(e) => Err(e),\n}","preventionTips":["Track mounted paths in your tooling and skip already-mounted ones","Always unmount cleanly on shutdown/error paths","Use canonicalized paths so duplicate registrations via symlinks are caught"],"tags":["mount","conflict","filesystem","rust"],"backgroundTag":"file-already-exists","analyzedSha":"affd8760f44190dbdfbec23403f4c4b642c33112","analyzedAt":"2026-09-09T21:28:12.402Z","contentChangedAt":"2026-09-09T21:28:12.402Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}