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
- Verify the exact spelling and subgraph qualification of the data connector name in the plugin definition
- Ensure the referenced data connector is actually defined in your metadata (check the data_connector files are included/loaded)
- 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
- Validate all cross-references before applying metadata
- Use consistent naming and automated renames when connectors change
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
- Data connector {data_connector_name} is referenced by multip
- NDC validation error: {0}
- {message}
- The orderable relationship '{relationship_name}' defined for
- The orderable relationship '{relationship_name}' defined for
AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28).
Data as JSON: /api/errors/eac013713a556512.
Report an issue: GitHub.