{"record":{"id":"06f69acde0c8f839","repo":"influxdata/influxdb","slug":"non-schedule-plugin-with-schedule-trigger-0","errorCode":null,"errorMessage":"non-schedule plugin with schedule trigger: {0}","messagePattern":"non-schedule plugin with schedule trigger: (.+?)","errorType":"validation","errorClass":"PluginError","httpStatus":null,"severity":"error","filePath":"influxdb3_processing_engine/src/plugins.rs","lineNumber":62,"sourceCode":"    #[error(transparent)]\n    WriteBufferError(#[from] write_buffer::Error),\n\n    #[error(transparent)]\n    AnyhowError(#[from] anyhow::Error),\n\n    #[error(\"reading plugin file: {0}\")]\n    ReadPluginError(#[from] std::io::Error),\n\n    #[error(\"error executing plugin: {0}\")]\n    PluginExecutionError(#[from] influxdb3_py_api::error::ExecutePluginError),\n\n    #[error(\"invalid cron syntax: {0}\")]\n    InvalidCronSyntax(#[from] cron::error::Error),\n\n    #[error(\"cron schedule never triggers: {0}\")]\n    CronScheduleNeverTriggers(String),\n\n    #[error(\"non-schedule plugin with schedule trigger: {0}\")]\n    NonSchedulePluginWithScheduleTrigger(String),\n\n    #[error(\"error fetching plugin from repository: {0} {1}\")]\n    FetchingFromRepository(reqwest::StatusCode, String),\n\n    #[error(\n        \"plugin installation is disabled; plugins must already exist in the configured plugin directory\"\n    )]\n    PluginInstallationDisabled,\n\n    #[error(\"Join error, please report: {0}\")]\n    JoinError(#[from] tokio::task::JoinError),\n\n    #[error(\"Node not configured with plugin directory\")]\n    NoPluginDir,\n\n    #[error(\n        \"Path traversal detected: plugin filename '{0}' attempts to access files outside the plugin directory\"","sourceCodeStart":44,"sourceCodeEnd":80,"githubUrl":"https://github.com/influxdata/influxdb/blob/06200ef96ba82c5f6727e5038a83af8e722c6875/influxdb3_processing_engine/src/plugins.rs#L44-L80","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before\nCREATE TRIGGER \"t\" ON ALL TABLES ... SCHEDULE '0 * * * *'\n// after\nCREATE TRIGGER \"t\" ON ALL TABLES ... FOR EACH ROW  // table plugin\n// or write a scheduled plugin and use: ... SCHEDULE '0 * * * *'","handlingStrategy":"validation","validationCode":"fn trigger_matches_plugin(plugin_type: &str, trigger_spec: &str) -> bool {\n    match (plugin_type, trigger_spec) {\n        (\"scheduled\", \"schedule\") | (\"wal\", \"table\") | (\"request\", \"request-path\") => true,\n        _ => false,\n    }\n}","typeGuard":"fn expects_schedule_trigger(plugin_kind: PluginKind) -> bool { matches!(plugin_kind, PluginKind::Scheduled) }","tryCatchPattern":null,"preventionTips":["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."],"tags":["scheduling","trigger","config-mismatch"],"backgroundTag":"conflicting-config-options","analyzedSha":"06200ef96ba82c5f6727e5038a83af8e722c6875","analyzedAt":"2026-09-19T12:55:30.003Z","contentChangedAt":"2026-09-19T12:55:30.003Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}