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
- Run `influxdb3 stop node --node-id <id>` (or the equivalent admin API) and wait for the node to reach the stopped state
- Re-check the node state before retrying the original operation
- Update orchestration to poll for the `stopped` state instead of assuming pause is sufficient
- 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
- Poll node state until it reports fully stopped before delete/start ops
- Never assume `pause` implies `stopped`
- Encode stop-then-wait-then-operate as one orchestration step
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
- tried to stop a node
- {0}
- Adding a new database would exceed limit of
- attempted to create a resource that already exists
- attempted to modify resource that was already deleted
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)