influxdata/influxdb · error · CatalogError

node ' ' is not fully stopped (current state: ); run "stop…

Error message

node '{node_id}' is not fully stopped (current state: {current_state}); run "stop node" first

What it means

This error is returned when a node operation (such as a delete or start) requires the node to be fully stopped, but the node's current state is something other than fully stopped (e.g. `paused`). The message includes the node id and its current state, and instructs the operator to run `stop node` first.

Solutions

  1. Run `influxdb3 stop node --node-id <id>` (or the equivalent admin API) and wait for the node to reach the stopped state
  2. Re-check the node state before retrying the original operation
  3. Update orchestration to poll for the `stopped` state instead of assuming pause is sufficient
  4. Retry the delete/start operation once the state confirms stopped

Example fix

// before
admin.pause_node(node_id)?;
admin.delete_node(node_id)?; // fails: node not fully stopped
// after
admin.stop_node(node_id)?;
wait_until(node_id, NodeState::Stopped);
admin.delete_node(node_id)?;
Defensive patterns

Strategy: validation

Validate before calling

fn ready_for_node_op(state: &str) -> bool { state == "stopped" }

Try / catch

match delete_node(node_id) {
    Err(e) if e.to_string().contains("not fully stopped") => {
        stop_node_and_wait(node_id)?;
        delete_node(node_id)
    },
    r => r,
}

Prevention

When it happens

Trigger: Deleting or otherwise operating on a node via admin APIs while the node is in a state like `paused` rather than fully `stopped`.

Common situations: Pausing a node and immediately trying to delete it without completing the stop; assuming `pause` equals `stop`; orchestration gaps between stop and subsequent node removal.

Understand the failure class

Background: "Invalid state transition" errors: "status must be X, actually Y", "already rejected/charging/uninstalled", "cannot ... while running" — what they mean when a library rejects your call — this error's family across 31 libraries.

Related errors


AI-assisted analysis of influxdata/influxdb@06200ef96b (2026-09-19). Data as JSON: /api/errors/6bf4e0f382dcb7ef. Report an issue: GitHub.

Appendix: source

Thrown at influxdb3_catalog/src/error.rs:300

    #[error("token name already exists, {0}")]
    TokenNameAlreadyExists(String),

    #[error("token hash already exists")]
    TokenHashAlreadyExists,

    #[error("missing admin token, cannot update")]
    MissingAdminTokenToUpdate,

    #[error("cannot delete internal db")]
    CannotDeleteInternalDatabase,

    #[error("cannot modify internal db")]
    CannotModifyInternalDatabase,

    #[error("tried to stop a node ({node_id}) that is already stopped")]
    NodeAlreadyStopped { node_id: Arc<str> },

    #[error(
        "node '{node_id}' is not fully stopped (current state: {current_state}); run \"stop node\" first"
    )]
    NodeNotFullyStopped {
        node_id: Arc<str>,
        current_state: &'static str,
    },

    #[error("node '{node_id}' has compact mode and cannot be removed")]
    NodeModeNotRemovable { node_id: Arc<str> },

    #[error("invalid stop ack for node '{node_id}' (current state: {current_state})")]
    InvalidStopAck {
        node_id: Arc<str>,
        current_state: &'static str,
    },

    #[error("invalid unregister for node '{node_id}' (current state: {current_state})")]
    InvalidUnregister {

View on GitHub (pinned to 06200ef96b)