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

  1. 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.
  2. Inspect `SHOW TRIGGERS` to confirm the specification and plugin pairing.
  3. 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

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


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)