influxdata/influxdb · error · ExecutePluginError
{0}
Error message
{0} What it means
ExecutePluginError::PluginError wraps any anyhow::Error propagated out of Python plugin execution (e.g. an exception raised inside the plugin or a helper failure), displayed via its Display message ('{0}'). The message seen is therefore the underlying plugin/host error string, not a fixed text.
Solutions
- Read the wrapped message after 'PluginError' — it contains the actual root cause.
- Wrap plugin bodies in try/except and log via influxdb3_local.error with context, or fix the underlying bug the message names.
- Test the plugin locally (e.g. via the test harness) to reproduce the exception and get a full traceback.
- Check arguments passed via the trigger's args string for type/value mistakes.
Example fix
# before
def process_writes(influxdb3_local, table_batches, args=None):
influxdb3_local.query("SELEC * FROM t") # raises
# after
def process_writes(influxdb3_local, table_batches, args=None):
try:
influxdb3_local.query("SELECT * FROM t")
except Exception as e:
influxdb3_local.error(f"query failed: {e}") Defensive patterns
Strategy: try-catch
Try / catch
# Inside the plugin, guard every fallible operation and surface context:
def process_writes(influxdb3_local, table_batches, args=None):
try:
do_work(table_batches, args)
except Exception as e:
influxdb3_local.error(f"process_writes failed: {e}")
raise # or handle, to avoid a bare PluginError upstream Prevention
- Wrap plugin bodies in try/except and log with context via influxdb3_local.error
- Validate the trigger's args string before parsing/using it
- Test plugins locally against representative data
- Read the wrapped message after PluginError to find the root cause
When it happens
Trigger: Any failure during plugin execution that is converted into an anyhow error and returned through ExecutePluginResult — most commonly an uncaught Python exception inside process_writes/process_request/process_scheduled_call, or failures from influxdb3_local helper calls.
Common situations: Plugin code raises NameError/TypeError/KeyError at runtime; helper API calls fail (invalid query, bad write); the plugin author's own raise statements bubble up.
Related errors
- the process_request function is not present in the plugin…
- the process_scheduled_call function is not present in the…
- the process_writes function is not present in the plugin…
- CA certificate PEM should be valid
- call site contains null bytes
AI-assisted analysis of influxdata/influxdb@06200ef96b (2026-09-19).
Data as JSON: /api/errors/5937d062300e36ff.
Report an issue: GitHub.
Appendix: source
Thrown at influxdb3_py_api/src/error.rs:20
#[derive(Debug, Error)]
pub enum ExecutePluginError {
#[error(
"the process_writes function is not present in the plugin. Should be defined as: process_writes(influxdb3_local, table_batches, args=None)"
)]
MissingProcessWritesFunction,
#[error(
"the process_request function is not present in the plugin. Should be defined as: process_request(influxdb3_local, query_parameters, request_headers, request_body, args=None) -> Tuple[str, Optional[Dict[str, str]]]"
)]
MissingProcessRequestFunction,
#[error(
"the process_scheduled_call function is not present in the plugin. Should be defined as: process_scheduled_call(influxdb3_local, call_time, args=None)"
)]
MissingProcessScheduledCallFunction,
#[error("{0}")]
PluginError(#[from] anyhow::Error),
}
pub type ExecutePluginResult<T> = Result<T, ExecutePluginError>;
View on GitHub (pinned to 06200ef96b)