{"record":{"id":"f97839a33388d4fd","repo":"rustfs/rustfs","slug":"a-connect-inventory-runtime-already-owns-this-stat","errorCode":null,"errorMessage":"a Connect inventory runtime already owns this state","messagePattern":"a Connect inventory runtime already owns this state","errorType":"exception","errorClass":"InventoryError::AlreadyRunning","httpStatus":null,"severity":"error","filePath":"rustfs/src/connect/inventory.rs","lineNumber":618,"sourceCode":"    #[error(\"the RustFS inventory version is outside protocol bounds\")]\n    RustfsVersion,\n    #[error(\"the RustFS inventory operating-system version is outside protocol bounds\")]\n    OsVersion,\n    #[error(\"the RustFS inventory node count is outside protocol bounds\")]\n    NodeCount,\n    #[error(\"the RustFS inventory drive count is outside protocol bounds\")]\n    DriveCount,\n    #[error(\"the RustFS inventory capacity is outside protocol bounds\")]\n    Capacity,\n    #[error(\"the RustFS inventory coarse flags are not canonical\")]\n    CoarseFlags,\n    #[error(\"the RustFS inventory snapshot is incomplete: observed {observed} of {expected} configured drives\")]\n    SnapshotIncomplete { expected: usize, observed: usize },\n    #[error(\"the Connect inventory schedule is invalid\")]\n    Schedule,\n    #[error(\"the Connect inventory sequence is exhausted\")]\n    SequenceExhausted,\n    #[error(\"a Connect inventory runtime already owns this state\")]\n    AlreadyRunning,\n    #[error(\"the persisted Connect inventory changed while delivery was in flight\")]\n    StateConflict,\n    #[error(\"the Connect inventory state path is invalid\")]\n    StatePath,\n    #[error(\"Connect inventory state I/O failed at {path}: {source}\")]\n    StateIo {\n        path: PathBuf,\n        #[source]\n        source: io::Error,\n    },\n    #[error(\"Connect inventory state at {path} is invalid: {source}\")]\n    StateInvalid {\n        path: PathBuf,\n        #[source]\n        source: serde_json::Error,\n    },\n    #[error(\"Connect inventory state at {path} violates the protocol invariants\")]","sourceCodeStart":600,"sourceCodeEnd":636,"githubUrl":"https://github.com/rustfs/rustfs/blob/201c653dcd34c2a01b9aec5991ed76176b342118/rustfs/src/connect/inventory.rs#L600-L636","documentation":"InventoryError::AlreadyRunning fires when a second Connect inventory runtime tries to take ownership of state that another runtime already owns — a singleton guard against concurrent report loops over one state directory.","triggerScenarios":"Thrown at rustfs/src/connect/inventory.rs:618 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Stop the existing inventory runtime before starting another","Check for duplicate RustFS processes sharing the state directory","Clear stale ownership records only after confirming no live runtime"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"201c653dcd34c2a01b9aec5991ed76176b342118","analyzedAt":"2026-08-23T16:57:04.676Z","contentChangedAt":"2026-08-23T16:57:04.676Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}