{"record":{"id":"1f8ae3cad6458e44","repo":"influxdata/influxdb","slug":"invalid-node-name-0","errorCode":null,"errorMessage":"invalid node name ({0})","messagePattern":"invalid node name \\((.+?)\\)","errorType":"validation","errorClass":"CatalogError","httpStatus":400,"severity":"error","filePath":"influxdb3_catalog/src/error.rs","lineNumber":124,"sourceCode":"        table_name: Arc<str>,\n    },\n\n    #[error(\n        \"column '{column_name}' ({column_type}) is not defined in table '{table_name}' of \\\n         database '{db_name}', which uses explicit schemas; add the column with the \\\n         /api/v3/configure/table API before writing to it\"\n    )]\n    UndeclaredColumn {\n        db_name: Arc<str>,\n        table_name: Arc<str>,\n        column_name: Arc<str>,\n        column_type: InfluxColumnType,\n    },\n\n    #[error(\"invalid node registration\")]\n    InvalidNodeRegistration,\n\n    #[error(\"invalid node name ({0})\")]\n    InvalidNodeName(String),\n\n    #[error(\"invalid node spec: {0}\")]\n    InvalidNodeSpec(#[source] anyhow::Error),\n\n    #[error(\n        \"Schema update for table '{table_name}' would exceed the column limit: \\\n        proposed schema update would have {attempted} columns, but the limit is {limit}\"\n    )]\n    TooManyColumns {\n        table_name: TruncatedTableName,\n        attempted: usize,\n        limit: usize,\n    },\n\n    #[error(\n        \"Schema update for table '{table_name}' would exceed the tag column limit: \\\n        proposed schema would have {attempted} tag columns, but the limit is {limit}\"","sourceCodeStart":106,"sourceCodeEnd":142,"githubUrl":"https://github.com/influxdata/influxdb/blob/06200ef96ba82c5f6727e5038a83af8e722c6875/influxdb3_catalog/src/error.rs#L106-L142","documentation":"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.","triggerScenarios":"Calling register_node (or node lookup/management APIs) with a node_id containing whitespace, invalid characters, or an empty/oversized string.","commonSituations":"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.","solutions":["Use a simple, non-empty identifier (letters, digits, hyphens) for the node ID, e.g. 'influx-node-1'.","Trim the value and check it is non-empty before calling the API.","If deriving from a hostname, sanitize it (replace invalid characters, drop the domain part)."],"exampleFix":"// before\nregister_node(node_id: \"Influx_Node.local\")  // invalid characters\n// after\nregister_node(node_id: \"influx-node-1\")","handlingStrategy":"validation","validationCode":"function isValidNodeName(name) {\n  return typeof name === \"string\" && /^[A-Za-z0-9][A-Za-z0-9_-]*$/.test(name);\n}\nif (!isValidNodeName(cfg.node_id)) throw new Error(`invalid node_id: ${cfg.node_id}`);","typeGuard":"const isNodeName = (v) => typeof v === \"string\" && v.length > 0 && /^[A-Za-z0-9_-]+$/.test(v);","tryCatchPattern":"try {\n  await registerNode(node);\n} catch (e) {\n  if (e.message.startsWith(\"invalid node name\")) {\n    throw new Error(`fix node_id in config: ${e.message}`);\n  }\n  throw e;\n}","preventionTips":["Sanitize hostnames before using them as node IDs.","Fail fast on empty or templated placeholder node IDs at startup.","Constrain node IDs to letters, digits, hyphens, underscores."],"tags":["influxdb3","node","naming","validation"],"backgroundTag":"invalid-identifier-format","analyzedSha":"06200ef96ba82c5f6727e5038a83af8e722c6875","analyzedAt":"2026-09-19T12:55:30.003Z","contentChangedAt":"2026-09-19T12:55:30.003Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}