influxdata/influxdb · error · anyhow::Error
unexpectedly found every trigger specification every
Error message
unexpectedly found every trigger specification every:{duration} for WAL plugin {trigger_name} What it means
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.
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.
Example fix
// before CREATE TRIGGER "wal_trig" ON db PROCESSING ENGINE PLUGIN wal_plugin AT EVERY 10 minutes // after CREATE TRIGGER "sched_trig" ON db PROCESSING ENGINE PLUGIN sched_plugin AT EVERY 10 minutes
Defensive patterns
Strategy: validation
Validate before calling
// Same pairing check as cron case
if matches!(spec, TriggerSpecificationDefinition::Every{..}) && plugin_type.requires_wal_trigger() {
return Err(anyhow!("WAL plugins cannot use EVERY schedules"));
} Prevention
- 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
When it happens
Trigger: `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.
Common situations: Miswritten CREATE TRIGGER statement combining `EVERY` with a WAL plugin; automated config generation mixing spec types; catalog edited or migrated incorrectly.
Understand the failure class
Background: "This is a bug, please report it": internal invariant violations, unreachable panics, and SNH errors explained — this error's family across 47 libraries.
Related errors
- unexpectedly found scheduled trigger specification cron
- another process has written to the WAL ahead of this one
- bitcode error
- By the point that we're doing partitioning, we should've…
- Cannot merge table indices with mismatched identifiers
AI-assisted analysis of influxdata/influxdb@06200ef96b (2026-09-19).
Data as JSON: /api/errors/2b4d328526ae412b.
Report an issue: GitHub.
Appendix: source
Thrown at influxdb3_processing_engine/src/worker/local.rs:573
fn make_wal_table_filter(
&self,
schema: &influxdb3_catalog::catalog::DatabaseSchema,
) -> Result<Option<influxdb3_id::TableId>, PluginError> {
match &self.trigger_definition.trigger {
TriggerSpecificationDefinition::AllTablesWalWrite => Ok(None),
TriggerSpecificationDefinition::SingleTableWalWrite { table_name } => {
let table_id = schema
.table_name_to_id(table_name)
.context("table not found")?;
Ok(Some(table_id))
}
TriggerSpecificationDefinition::Schedule { schedule } => Err(anyhow!(
"unexpectedly found scheduled trigger specification cron:{} for WAL plugin {}",
schedule,
self.trigger_definition.trigger_name
)
.into()),
TriggerSpecificationDefinition::Every { duration } => Err(anyhow!(
"unexpectedly found every trigger specification every:{} for WAL plugin {}",
format_duration(*duration),
self.trigger_definition.trigger_name
)
.into()),
TriggerSpecificationDefinition::RequestPath { path } => Err(anyhow!(
"unexpectedly found request path trigger specification {} for WAL plugin {}",
path,
self.trigger_definition.trigger_name
)
.into()),
}
}
fn log_return_state_errors(
&self,
logger: &ProcessingEngineLogger,
errors: &[anyhow::Error],View on GitHub (pinned to 06200ef96b)