influxdata/influxdb · error · CatalogError

Processing Engine Plugin

Error message

Processing Engine Plugin {} not in DB schema for {}

What it means

A Processing Engine operation referenced a plugin by name, but no such plugin exists in the database's schema (DB schema holds the installed plugin definitions). The catalog throws this when the plugin name cannot be resolved against the schema for the given database.

Solutions

  1. Install/upload the plugin into the target database first (influxdb3 package upload / plugin install API), then retry the operation.
  2. Verify the exact plugin name against the database's plugin list (SHOW plugins or catalog query).
  3. Check you are operating on the correct database; plugins are scoped per database.

Example fix

// before
CREATE TRIGGER t ON DATABASE mydb ... USING plugin 'wrong_name';
// after: install the plugin first
influxdb3 package upload my_plugin.py --database mydb
CREATE TRIGGER t ON DATABASE mydb ... USING plugin 'my_plugin';
Defensive patterns

Strategy: validation

Validate before calling

// Ensure the plugin exists in the DB schema before creating a trigger
const plugins = await client.listPlugins(db);
if (!plugins.some(p => p.pluginName === pluginName)) {
  await client.uploadPlugin(db, pluginName, pluginCode);
}
await client.createTrigger(db, { pluginName, /* ... */ });

Type guard

function pluginInstalled(plugins, name) {
  return Array.isArray(plugins) && plugins.some(p => p?.pluginName === name);
}

Try / catch

try {
  await createTrigger(db, spec);
} catch (e) {
  if (String(e).includes('not in DB schema')) {
    await uploadPlugin(db, spec.pluginName, spec.pluginCode);
    await createTrigger(db, spec);
  } else throw e;
}

Prevention

When it happens

Trigger: Creating/updating a trigger that references plugin_name which was never installed into database_name, or looking up a plugin (get plugin by name) with a name not present in the DB schema.

Common situations: Typo in the plugin name when defining a trigger; installing the plugin in a different database than the trigger's; the plugin package was deleted before the trigger referencing it was recreated; environment restore where plugin packages were lost.

Understand the failure class

Background: "Not found" and "does not exist" errors: why "Task not found", "No such folder", and "Can't find" fire when a lookup comes back empty — this error's family across 14 libraries.

Related errors


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

Appendix: source

Thrown at influxdb3_catalog/src/error.rs:241

    #[error(
        "Cannot delete running plugin {}. Disable it first or use --force.",
        trigger_name
    )]
    ProcessingEngineTriggerRunning { trigger_name: String },

    #[error(
        "Cannot delete plugin {} in database {} because it is used by trigger {}",
        plugin_name,
        database_name,
        trigger_name
    )]
    ProcessingEnginePluginInUse {
        database_name: String,
        plugin_name: String,
        trigger_name: String,
    },

    #[error(
        "Processing Engine Plugin {} not in DB schema for {}",
        plugin_name,
        database_name
    )]
    ProcessingEnginePluginNotFound {
        plugin_name: String,
        database_name: String,
    },

    #[error("Processing Engine Unimplemented: {}", feature_description)]
    ProcessingEngineUnimplemented { feature_description: String },

    #[error(
        "Processing Engine Trigger {} not in DB {}",
        trigger_name,
        database_name
    )]
    ProcessingEngineTriggerNotFound {

View on GitHub (pinned to 06200ef96b)