influxdata/influxdb · error · PluginError
non-schedule plugin with schedule trigger
Error message
non-schedule plugin with schedule trigger: {0} What it means
PluginError::NonSchedulePluginWithScheduleTrigger is thrown when a trigger attempts to attach a cron/schedule trigger specification to a plugin that is not a schedule-type plugin. The processing engine only permits Schedule trigger specs for schedule-capable plugins.
Solutions
- Use the matching trigger type: table trigger (ALL TABLES / table name) or request path trigger for non-schedule plugins.
- Register the plugin as a scheduled plugin if cron invocation is desired.
- Update the CREATE TRIGGER statement to remove SCHEDULE and specify the correct trigger spec.
Example fix
// before CREATE TRIGGER "t" ON ALL TABLES ... SCHEDULE '0 * * * *' // after CREATE TRIGGER "t" ON ALL TABLES ... FOR EACH ROW // table plugin // or write a scheduled plugin and use: ... SCHEDULE '0 * * * *'
Defensive patterns
Strategy: validation
Validate before calling
fn trigger_matches_plugin(plugin_type: &str, trigger_spec: &str) -> bool {
match (plugin_type, trigger_spec) {
("scheduled", "schedule") | ("wal", "table") | ("request", "request-path") => true,
_ => false,
}
} Type guard
fn expects_schedule_trigger(plugin_kind: PluginKind) -> bool { matches!(plugin_kind, PluginKind::Scheduled) } Prevention
- Match plugin type to trigger spec before creating triggers.
- Document per-plugin trigger requirements in the plugin metadata.
- Review CREATE TRIGGER statements for SCHEDULE usage with non-scheduled plugins.
When it happens
Trigger: Calling the plugin/trigger creation API (plugins.rs try_new / scheduler wiring) with TriggerSpecificationDefinition::Schedule for a plugin registered as a WAL-table or request-path plugin.
Common situations: Admins create a trigger with SCHEDULE syntax for a plugin written for WAL writes or HTTP request invocation; mismatch between plugin type and trigger spec in CREATE TRIGGER statements.
Understand the failure class
Background: Conflicting config options: "cannot be used together" — configuration validation errors across open-source libraries — this error's family across 162 libraries.
Related errors
- shouldn't have table trigger for scheduled plugin
- can't be out of range
- Cannot delete plugin
- Cannot delete running plugin
- Cannot overwrite Processing Engine Trigger
AI-assisted analysis of influxdata/influxdb@06200ef96b (2026-09-19).
Data as JSON: /api/errors/06f69acde0c8f839.
Report an issue: GitHub.
Appendix: source
Thrown at influxdb3_processing_engine/src/plugins.rs:62
#[error(transparent)]
WriteBufferError(#[from] write_buffer::Error),
#[error(transparent)]
AnyhowError(#[from] anyhow::Error),
#[error("reading plugin file: {0}")]
ReadPluginError(#[from] std::io::Error),
#[error("error executing plugin: {0}")]
PluginExecutionError(#[from] influxdb3_py_api::error::ExecutePluginError),
#[error("invalid cron syntax: {0}")]
InvalidCronSyntax(#[from] cron::error::Error),
#[error("cron schedule never triggers: {0}")]
CronScheduleNeverTriggers(String),
#[error("non-schedule plugin with schedule trigger: {0}")]
NonSchedulePluginWithScheduleTrigger(String),
#[error("error fetching plugin from repository: {0} {1}")]
FetchingFromRepository(reqwest::StatusCode, String),
#[error(
"plugin installation is disabled; plugins must already exist in the configured plugin directory"
)]
PluginInstallationDisabled,
#[error("Join error, please report: {0}")]
JoinError(#[from] tokio::task::JoinError),
#[error("Node not configured with plugin directory")]
NoPluginDir,
#[error(
"Path traversal detected: plugin filename '{0}' attempts to access files outside the plugin directory"View on GitHub (pinned to 06200ef96b)