{"record":{"id":"2b4d328526ae412b","repo":"influxdata/influxdb","slug":"unexpectedly-found-every-trigger-specification-every","errorCode":null,"errorMessage":"unexpectedly found every trigger specification every:{duration} for WAL plugin {trigger_name}","messagePattern":"unexpectedly found every trigger specification every:(.+?) for WAL plugin (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"influxdb3_processing_engine/src/worker/local.rs","lineNumber":573,"sourceCode":"    fn make_wal_table_filter(\n        &self,\n        schema: &influxdb3_catalog::catalog::DatabaseSchema,\n    ) -> Result<Option<influxdb3_id::TableId>, PluginError> {\n        match &self.trigger_definition.trigger {\n            TriggerSpecificationDefinition::AllTablesWalWrite => Ok(None),\n            TriggerSpecificationDefinition::SingleTableWalWrite { table_name } => {\n                let table_id = schema\n                    .table_name_to_id(table_name)\n                    .context(\"table not found\")?;\n                Ok(Some(table_id))\n            }\n            TriggerSpecificationDefinition::Schedule { schedule } => Err(anyhow!(\n                \"unexpectedly found scheduled trigger specification cron:{} for WAL plugin {}\",\n                schedule,\n                self.trigger_definition.trigger_name\n            )\n            .into()),\n            TriggerSpecificationDefinition::Every { duration } => Err(anyhow!(\n                \"unexpectedly found every trigger specification every:{} for WAL plugin {}\",\n                format_duration(*duration),\n                self.trigger_definition.trigger_name\n            )\n            .into()),\n            TriggerSpecificationDefinition::RequestPath { path } => Err(anyhow!(\n                \"unexpectedly found request path trigger specification {} for WAL plugin {}\",\n                path,\n                self.trigger_definition.trigger_name\n            )\n            .into()),\n        }\n    }\n\n    fn log_return_state_errors(\n        &self,\n        logger: &ProcessingEngineLogger,\n        errors: &[anyhow::Error],","sourceCodeStart":555,"sourceCodeEnd":591,"githubUrl":"https://github.com/influxdata/influxdb/blob/06200ef96ba82c5f6727e5038a83af8e722c6875/influxdb3_processing_engine/src/worker/local.rs#L555-L591","documentation":"Same invariant as the cron variant: `make_wal_table_filter` encountered an `Every { duration }` trigger specification while executing a WAL plugin. Interval (every:N) triggers are scheduled, not WAL-driven, so pairing one with a WAL plugin is invalid and this error reports the offending duration and trigger name.","triggerScenarios":"`execute_wal_once` on a trigger whose specification is `Every { duration }` — i.e. the trigger was created with `AT EVERY <duration>` but uses a WAL plugin type.","commonSituations":"Miswritten CREATE TRIGGER statement combining `EVERY` with a WAL plugin; automated config generation mixing spec types; catalog edited or migrated incorrectly.","solutions":["Recreate the trigger with an `EVERY`-compatible (scheduled) plugin type, or use a WAL specification (`FOREACH ROW` / single-table WAL write) with the WAL plugin.","Inspect `SHOW TRIGGERS` to confirm the specification and plugin pairing.","Fix the automation/script generating triggers so spec type and plugin type match."],"exampleFix":"// before\nCREATE TRIGGER \"wal_trig\" ON db PROCESSING ENGINE PLUGIN wal_plugin AT EVERY 10 minutes\n// after\nCREATE TRIGGER \"sched_trig\" ON db PROCESSING ENGINE PLUGIN sched_plugin AT EVERY 10 minutes","handlingStrategy":"validation","validationCode":"// Same pairing check as cron case\nif matches!(spec, TriggerSpecificationDefinition::Every{..}) && plugin_type.requires_wal_trigger() {\n    return Err(anyhow!(\"WAL plugins cannot use EVERY schedules\"));\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pair scheduled plugins with cron/EVERY specs and WAL plugins with WAL specs","Enforce the pairing in config generators and CI validation","Audit existing triggers after version upgrades or catalog migrations"],"tags":["wal","triggers","misconfiguration","invariant"],"backgroundTag":"internal-invariant-violation","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"}