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
- Parse the inner PluginError message (it wraps the concrete cause, e.g. 'Plugin not found: X').
- Fix the underlying plugin issue (restore the file, correct the name, fix plugin code).
- Re-upload/redeploy the plugin package if files are missing or stale.
- 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
- Lint/compile plugin scripts before uploading.
- Keep plugin files and trigger definitions in sync (deploy via replace_plugin_directory atomically).
- Log the inner PluginError detail — it names the concrete cause.
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)