influxdata/influxdb · warning · CatalogError
plugin trigger is already disabled
Error message
plugin trigger is already disabled
What it means
CatalogError::TriggerAlreadyDisabled is thrown when disabling a plugin trigger that is already in the disabled state. The catalog validates the trigger's status during the disable operation and rejects the redundant state transition.
Solutions
- Check the trigger's current status before disabling and skip if already disabled.
- Treat this error as success in idempotent teardown: catch it and continue when the intent was 'ensure disabled'.
- Enable the trigger first if you intended to toggle rather than just disable.
Example fix
// before
for (const t of triggers) await client.post(`/api/v3/configure/triggers/${t}/disable`); // errors on second run
// after
for (const t of triggers) {
const s = (await client.get(`/api/v3/configure/triggers/${t}`)).status;
if (s === "enabled") await client.post(`/api/v3/configure/triggers/${t}/disable`);
} Defensive patterns
Strategy: try-catch
Validate before calling
const trig = await client.get(`/api/v3/configure/triggers/${name}`);
if (trig.status === "disabled") return; // already disabled Try / catch
try {
await disableTrigger(name);
} catch (e) {
if (e.message.includes("already disabled")) return; // treat as success
throw e;
} Prevention
- Make teardown scripts idempotent: check status first.
- Serialize trigger management through a single control plane/lock.
- Treat state-conflict errors as success when the goal is 'ensure state X'.
When it happens
Trigger: POSTing to the trigger disable API for a trigger whose status is already 'disabled', or calling catalog disable_trigger twice without an intervening enable.
Common situations: Cleanup/teardown scripts that disable all triggers on shutdown and are run more than once; concurrent API clients issuing the same disable; retries after ambiguous network failures.
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
- plugin trigger is already enabled
- Cannot delete plugin
- Cannot delete running plugin
- Invalid endpoint
- {0}
AI-assisted analysis of influxdata/influxdb@06200ef96b (2026-09-19).
Data as JSON: /api/errors/593d73ebd31288bd.
Report an issue: GitHub.
Appendix: source
Thrown at influxdb3_catalog/src/error.rs:87
)]
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"
)]
UndeclaredTable {
db_name: Arc<str>,View on GitHub (pinned to 06200ef96b)