influxdata/influxdb · error · CatalogError

invalid node name ( )

Error message

invalid node name ({0})

What it means

CatalogError::InvalidNodeName is thrown when a node identifier supplied to a catalog node operation is not a valid node name. The offending value is included in the message, so the cause is usually characters or formatting that the catalog's node-name validation rejects.

Solutions

  1. Use a simple, non-empty identifier (letters, digits, hyphens) for the node ID, e.g. 'influx-node-1'.
  2. Trim the value and check it is non-empty before calling the API.
  3. If deriving from a hostname, sanitize it (replace invalid characters, drop the domain part).

Example fix

// before
register_node(node_id: "Influx_Node.local")  // invalid characters
// after
register_node(node_id: "influx-node-1")
Defensive patterns

Strategy: validation

Validate before calling

function isValidNodeName(name) {
  return typeof name === "string" && /^[A-Za-z0-9][A-Za-z0-9_-]*$/.test(name);
}
if (!isValidNodeName(cfg.node_id)) throw new Error(`invalid node_id: ${cfg.node_id}`);

Type guard

const isNodeName = (v) => typeof v === "string" && v.length > 0 && /^[A-Za-z0-9_-]+$/.test(v);

Try / catch

try {
  await registerNode(node);
} catch (e) {
  if (e.message.startsWith("invalid node name")) {
    throw new Error(`fix node_id in config: ${e.message}`);
  }
  throw e;
}

Prevention

When it happens

Trigger: Calling register_node (or node lookup/management APIs) with a node_id containing whitespace, invalid characters, or an empty/oversized string.

Common situations: Deriving node IDs from hostnames that contain underscores or domains; templating mistakes leaving placeholder text or empty strings in configuration; copying a node ID with surrounding whitespace.

Understand the failure class

Background: "invalid id" errors: invalid identifier format — why libraries reject IDs before lookup, and how to fix them — this error's family across 37 libraries.

Related errors


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

Appendix: source

Thrown at influxdb3_catalog/src/error.rs:124

        table_name: Arc<str>,
    },

    #[error(
        "column '{column_name}' ({column_type}) is not defined in table '{table_name}' of \
         database '{db_name}', which uses explicit schemas; add the column with the \
         /api/v3/configure/table API before writing to it"
    )]
    UndeclaredColumn {
        db_name: Arc<str>,
        table_name: Arc<str>,
        column_name: Arc<str>,
        column_type: InfluxColumnType,
    },

    #[error("invalid node registration")]
    InvalidNodeRegistration,

    #[error("invalid node name ({0})")]
    InvalidNodeName(String),

    #[error("invalid node spec: {0}")]
    InvalidNodeSpec(#[source] anyhow::Error),

    #[error(
        "Schema update for table '{table_name}' would exceed the column limit: \
        proposed schema update would have {attempted} columns, but the limit is {limit}"
    )]
    TooManyColumns {
        table_name: TruncatedTableName,
        attempted: usize,
        limit: usize,
    },

    #[error(
        "Schema update for table '{table_name}' would exceed the tag column limit: \
        proposed schema would have {attempted} tag columns, but the limit is {limit}"

View on GitHub (pinned to 06200ef96b)