rustfs/rustfs · error · InventoryError::AlreadyRunning

a Connect inventory runtime already owns this state

Error message

a Connect inventory runtime already owns this state

What it means

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.

Source

Thrown at rustfs/src/connect/inventory.rs:618

    #[error("the RustFS inventory version is outside protocol bounds")]
    RustfsVersion,
    #[error("the RustFS inventory operating-system version is outside protocol bounds")]
    OsVersion,
    #[error("the RustFS inventory node count is outside protocol bounds")]
    NodeCount,
    #[error("the RustFS inventory drive count is outside protocol bounds")]
    DriveCount,
    #[error("the RustFS inventory capacity is outside protocol bounds")]
    Capacity,
    #[error("the RustFS inventory coarse flags are not canonical")]
    CoarseFlags,
    #[error("the RustFS inventory snapshot is incomplete: observed {observed} of {expected} configured drives")]
    SnapshotIncomplete { expected: usize, observed: usize },
    #[error("the Connect inventory schedule is invalid")]
    Schedule,
    #[error("the Connect inventory sequence is exhausted")]
    SequenceExhausted,
    #[error("a Connect inventory runtime already owns this state")]
    AlreadyRunning,
    #[error("the persisted Connect inventory changed while delivery was in flight")]
    StateConflict,
    #[error("the Connect inventory state path is invalid")]
    StatePath,
    #[error("Connect inventory state I/O failed at {path}: {source}")]
    StateIo {
        path: PathBuf,
        #[source]
        source: io::Error,
    },
    #[error("Connect inventory state at {path} is invalid: {source}")]
    StateInvalid {
        path: PathBuf,
        #[source]
        source: serde_json::Error,
    },
    #[error("Connect inventory state at {path} violates the protocol invariants")]

View on GitHub (pinned to 201c653dcd)

Solutions

  1. Stop the existing inventory runtime before starting another
  2. Check for duplicate RustFS processes sharing the state directory
  3. Clear stale ownership records only after confirming no live runtime
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at rustfs/src/connect/inventory.rs:618 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of rustfs/rustfs@201c653dcd (2026-08-23). Data as JSON: /api/errors/f97839a33388d4fd. Report an issue: GitHub.