influxdata/influxdb · error · ProcessingEngineError

plugin error

Error message

plugin error: {0}

What it means

ProcessingEngineError::PluginError with #[from] crate::plugins::PluginError — automatic conversion of plugin subsystem errors. Any failure inside the plugins module (the anyhow-wrapped errors above, load errors, validation errors) is surfaced as `plugin error: {0}`.

Solutions

  1. Parse the inner PluginError message (it wraps the concrete cause, e.g. 'Plugin not found: X').
  2. Fix the underlying plugin issue (restore the file, correct the name, fix plugin code).
  3. Re-upload/redeploy the plugin package if files are missing or stale.
  4. Validate plugin scripts locally (python -m py_compile) before uploading.

Example fix

// before: plugin with syntax error uploaded
// plugin.py: def process_writes(writes, erro)
// after
def process_writes(writes):
    ...
Defensive patterns

Strategy: try-catch

Validate before calling

// validate plugin file before upload
const ok = child_process.execSync(`python -m py_compile ${pluginPath}`).status === 0;

Try / catch

try {
  await callEngineApi();
} catch (e) {
  if (String(e).startsWith('plugin error')) {
    throw new Error(`Plugin subsystem failed: ${e.message.replace('plugin error: ', '')}`);
  } else { throw e; }
}

Prevention

When it happens

Trigger: Any processing-engine API path that calls into crate::plugins and returns PluginError: missing plugin dir, plugin not found, invalid plugin file, script load/validation failure.

Common situations: Broken Python plugin syntax causing load failure; plugin file removed while triggers still reference it; plugin dir misconfiguration propagating through this wrapper.

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/0b466fc770a5b1aa. Report an issue: GitHub.

Appendix: source

Thrown at influxdb3_processing_engine/src/manager.rs:21

use influxdb3_id::{DbId, TriggerId};
use std::fmt::Debug;
use thiserror::Error;

#[derive(Debug, Error)]
pub enum ProcessingEngineError {
    #[error("database not found: {0}")]
    DatabaseNotFound(String),

    #[error("catalog update error: {0}")]
    CatalogUpdateError(#[from] CatalogError),

    #[error("write buffer error: {0}")]
    WriteBufferError(#[from] influxdb3_write::write_buffer::Error),

    #[error("wal error: {0}")]
    WalError(#[from] influxdb3_wal::Error),

    #[error("plugin error: {0}")]
    PluginError(#[from] crate::plugins::PluginError),

    #[error("processing engine trigger {trigger_id} not found in database {db_id}")]
    TriggerNotFound { db_id: DbId, trigger_id: TriggerId },

    #[error("request trigger not found")]
    RequestTriggerNotFound,

    #[error("request handler for trigger down")]
    RequestHandlerDown,

    #[error("error installing python packages: {0}")]
    PythonPackageError(PluginEnvironmentError),

    #[error("{0}")]
    PackageInstallationDisabled(PluginEnvironmentError),
}

View on GitHub (pinned to 06200ef96b)