influxdata/influxdb · warning · CatalogError

plugin trigger is already enabled

Error message

plugin trigger is already enabled

What it means

CatalogError::TriggerAlreadyEnabled is thrown when enabling a plugin trigger that is already in the enabled state. The catalog checks the trigger's current status during the enable operation and rejects the redundant state transition (raised from trigger enable ops, e.g. influxdb3_catalog/src/catalog/versions/v3/ops/trigger.rs:178).

Solutions

  1. Check the trigger's current status before enabling (query the trigger list/status) and skip the call if it is already enabled.
  2. Treat this error as success in idempotent automation: catch it and continue when the intent was 'ensure enabled'.
  3. Use the disable API first if you truly need to re-enable the trigger fresh.

Example fix

// before
client.post("/api/v3/configure/triggers/enable", {"trigger": "my_trigger"}); // fails on re-run
// after
let status = client.get("/api/v3/configure/triggers/my_trigger").status;
if (status !== "enabled") {
  client.post("/api/v3/configure/triggers/enable", {"trigger": "my_trigger"});
}
Defensive patterns

Strategy: try-catch

Validate before calling

const trig = await client.get(`/api/v3/configure/triggers/${name}`);
if (trig.status === "enabled") return; // already enabled

Try / catch

try {
  await enableTrigger(name);
} catch (e) {
  if (e.message.includes("already enabled")) return; // treat as success
  throw e;
}

Prevention

When it happens

Trigger: POSTing to the trigger enable API (/api/v3/configure/... enable trigger) for a trigger whose status is already 'enabled', or calling catalog enable_trigger twice without an intervening disable.

Common situations: Idempotency problems in deployment scripts that re-run enable commands; racing API calls where two clients enable the same trigger concurrently; retrying a request whose first attempt actually succeeded.

Understand the failure class

Background: "Invalid state transition" errors: "status must be X, actually Y", "already rejected/charging/uninstalled", "cannot ... while running" — what they mean when a library rejects your call — this error's family across 31 libraries.

Related errors


AI-assisted analysis of influxdata/influxdb@06200ef96b (2026-09-19). Data as JSON: /api/errors/e3ec3b01f97892d5. Report an issue: GitHub.

Appendix: source

Thrown at influxdb3_catalog/src/error.rs:84

    #[error(
        "persisted catalog checkpoint sequence {checkpoint_sequence} is ahead of live catalog sequence {live_sequence}"
    )]
    BackupCheckpointAhead {
        checkpoint_sequence: u64,
        live_sequence: u64,
    },

    #[error("invalid configuration provided: {message}")]
    InvalidConfiguration { message: Box<str> },

    #[error("only tag and string columns are supported in the distinct cache")]
    InvalidDistinctCacheColumnType,

    #[error("only uint64, int64, bool, tag, and string columns are supported in the last cache")]
    InvalidLastCacheKeyColumnType,

    #[error("plugin trigger is already enabled")]
    TriggerAlreadyEnabled,

    #[error("plugin trigger is already disabled")]
    TriggerAlreadyDisabled,

    #[error("invalid column type for column '{column_name}', expected {expected}, got {got}")]
    InvalidColumnType {
        column_name: Arc<str>,
        expected: InfluxColumnType,
        got: InfluxColumnType,
    },

    #[error("'{0}' is a reserved column")]
    ReservedColumn(Arc<str>),

    #[error(
        "table '{table_name}' is not defined in database '{db_name}', which uses explicit schemas; \
         create the table with the /api/v3/configure/table API before writing to it"

View on GitHub (pinned to 06200ef96b)