hasura/graphql-engine · error · PluginValidationError

Plugin {plugin_name} references unknown data connector {data

Error message

Plugin {plugin_name} references unknown data connector {data_connector_name}

What it means

Thrown during validation of lifecycle plugin metadata when a plugin references a data connector by name that is not defined anywhere in the metadata. Every plugin must point at an existing data connector.

Source

Thrown at v3/crates/metadata-resolve/src/stages/plugins/error.rs:7

use crate::Qualified;
use open_dds::data_connector::DataConnectorName;
use open_dds::plugins::LifecyclePluginName;

#[derive(Debug, thiserror::Error)]
pub enum PluginValidationError {
    #[error("Plugin {plugin_name} references unknown data connector {data_connector_name}")]
    UnknownDataConnector {
        plugin_name: Qualified<LifecyclePluginName>,
        data_connector_name: Qualified<DataConnectorName>,
    },
    #[error(
        "Data connector {data_connector_name} is referenced by multiple {plugin_type} plugins: {plugin_name_a} and {plugin_name_b}"
    )]
    DuplicatePluginForDataConnector {
        plugin_type: String,
        data_connector_name: Qualified<DataConnectorName>,
        plugin_name_a: Qualified<LifecyclePluginName>,
        plugin_name_b: Qualified<LifecyclePluginName>,
    },
    #[error("Plugin {plugin_name} is defined more than once")]
    DuplicatePluginName {
        plugin_name: Qualified<LifecyclePluginName>,
    },
}

View on GitHub (pinned to 724551b9ae)

Solutions

  1. Verify the exact spelling and subgraph qualification of the data connector name in the plugin definition
  2. Ensure the referenced data connector is actually defined in your metadata (check the data_connector files are included/loaded)
  3. If the connector was renamed, update the plugin's data_connector_name to the new name

Example fix

# before
plugins:
  - name: myPlugin
    data_connector: postgresMain   # typo / undefined
# after
plugins:
  - name: myPlugin
    data_connector: postgres_main
Defensive patterns

Strategy: validation

Validate before calling

const names = new Set(dataConnectors.map(c => qualified(c.subgraph, c.name)));
for (const p of plugins) {
  if (!names.has(qualified(p.subgraph, p.data_connector))) {
    throw new Error(`unknown data connector ${p.data_connector}`);
  }
}

Type guard

const connectorExists = (name, connectors) => connectors.has(`${name.subgraph}::${name.name}`);

Prevention

When it happens

Trigger: Declaring a lifecycle plugin whose data_connector_name does not match any data connector defined in the OpenDD metadata; produced by the plugins metadata stage during resolution.

Common situations: Typos in the connector name; renaming or deleting a data connector without updating plugins referencing it; plugin files loaded without the connector's definition file (missing file in the metadata directory).

Related errors


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