hasura/graphql-engine · error · DataConnectorError::DuplicateDataConnectorDefinition

the data connector is defined more than once

Error message

the data connector is defined more than once

What it means

The same data connector name is defined more than once in metadata. Connector names must be unique so resolution is deterministic.

Source

Thrown at v3/crates/metadata-resolve/src/stages/data_connectors/error.rs:22

use open_dds::data_connector::DataConnectorName;
use open_dds::flags;

impl ContextualError for NamedDataConnectorError {
    fn create_error_context(&self) -> Option<error_context::Context> {
        None
    }
}

#[derive(Debug, thiserror::Error)]
#[error("The data connector {data_connector_name} has an error: {error}")]
pub struct NamedDataConnectorError {
    pub data_connector_name: Qualified<DataConnectorName>,
    pub error: DataConnectorError,
}

#[derive(Debug, thiserror::Error)]
pub enum DataConnectorError {
    #[error("the data connector is defined more than once")]
    DuplicateDataConnectorDefinition,
    #[error("The url for the data connector is invalid: {error}")]
    InvalidDataConnectorUrl { error: url::ParseError },
    #[error("Invalid header name {header_name} specified")]
    InvalidHeaderName { header_name: String },
    #[error("Invalid value specified for header {header_name}")]
    InvalidHeaderValue { header_name: String },
    #[error("{0}")]
    NdcValidationError(NDCValidationError),
    #[error(
        "The version specified in the capabilities (\"{version}\") is an invalid version: {error}"
    )]
    InvalidNdcVersion {
        version: String,
        error: semver::Error,
    },
    #[error(
        "The version specified in the capabilities (\"{version}\") is not compatible with the schema version specified. The version requirement is {requirement}"

View on GitHub (pinned to 724551b9ae)

Solutions

  1. Search metadata for repeated connector names
  2. Remove or rename the duplicate definition
  3. Rebuild
Defensive patterns

Strategy: validation

Validate before calling

let mut seen = HashSet::new();
for c in &connectors { assert!(seen.insert(c.name.clone()), "duplicate connector"); }

Try / catch

Catch DataConnectorError::DuplicateDataConnectorDefinition and report the duplicated name.

Prevention

When it happens

Trigger: Two data connector definitions sharing the same qualified name in the metadata source.

Common situations: Appending a connector block instead of editing the existing one; merging metadata files with overlapping connectors.

Related errors


AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28). Data as JSON: /api/errors/f9174e39bc84e863. Report an issue: GitHub.