influxdata/influxdb · error · InvalidEndpoint
Invalid endpoint
Error message
Invalid endpoint: {url} What it means
ProcessingEngineError::TriggerNotFound is raised when the processing engine manager cannot find a trigger with the given TriggerId registered under the given database (DbId). The library throws it during trigger lookup/operations (e.g. enable/disable/delete or fetch) when the trigger identifier supplied does not exist in that database. It means the caller referenced a trigger that was never created or has since been removed.
Solutions
- List the existing triggers for the database (catalog/API) and confirm the exact trigger_id before retrying.
- Verify you are targeting the correct database (db_id); triggers are scoped per database.
- If the trigger should exist, re-create it with the processing engine trigger creation API/`CREATE TRIGGER`.
- Check whether the trigger was deleted (e.g. by another process or `DROP TRIGGER`) and re-register it.
Example fix
// before
manager.disable_trigger(db_id, trigger_id).await?;
// after
match manager.get_trigger(db_id, &trigger_id) {
Some(_) => manager.disable_trigger(db_id, trigger_id).await?,
None => eprintln!("trigger {trigger_id} does not exist in {db_id}; create it first"),
} Defensive patterns
Strategy: try-catch
Validate before calling
let exists = list_triggers(db_id).await?.iter().any(|t| t.id == trigger_id);
if !exists { return Err(format!("trigger {trigger_id} missing in {db_id}")); } Type guard
fn trigger_exists(triggers: &[Trigger], id: TriggerId) -> bool { triggers.iter().any(|t| t.id == id) } Try / catch
match res {
Err(ProcessingEngineError::TriggerNotFound { db_id, trigger_id }) => warn!("trigger {trigger_id:?} absent in {db_id:?}, skipping"),
Err(e) => return Err(e),
Ok(v) => v,
} Prevention
- Always resolve trigger IDs from a list/get call instead of hardcoding them.
- Scope operations to the same db_id the trigger was created with.
- Re-check trigger existence after restarts or catalog migrations.
When it happens
Trigger: Calling ProcessingEngineManager methods that take a trigger_id and db_id (e.g. disabling, enabling, deleting, or fetching a trigger) when no trigger with that TriggerId is registered for that database in the catalog.
Common situations: Typo'd trigger name/ID from a CLI command or HTTP API call; the trigger was deleted on another node; querying the wrong database; the trigger definition was dropped after a catalog migration or restart.
Understand the failure class
Background: "Not found" and "does not exist" errors: why "Task not found", "No such folder", and "Can't find" fire when a lookup comes back empty — this error's family across 14 libraries.
Related errors
- Processing Engine Trigger
- Cannot delete plugin
- Cannot delete running plugin
- Cannot overwrite Processing Engine Trigger
- database not found
AI-assisted analysis of influxdata/influxdb@06200ef96b (2026-09-19).
Data as JSON: /api/errors/65be53861d947c6d.
Report an issue: GitHub.
Appendix: source
Thrown at core/catalog_cache/src/api/client.rs:81
put_request_timeout: Duration,
list_request_timeout: Duration,
endpoint: Url,
registry: Arc<metric::Registry>,
}
impl CatalogCacheClientBuilder {
/// Build client.
pub fn build(self) -> Result<CatalogCacheClient> {
let Self {
connect_timeout,
get_request_timeout,
put_request_timeout,
list_request_timeout,
endpoint,
registry,
} = self;
ensure!(
endpoint.path().is_empty() || endpoint.path() == "/",
InvalidEndpointSnafu {
url: endpoint.clone()
},
);
ensure!(
endpoint.query().is_none(),
InvalidEndpointSnafu {
url: endpoint.clone()
},
);
ensure!(
endpoint.fragment().is_none(),
InvalidEndpointSnafu {
url: endpoint.clone()
},
);
View on GitHub (pinned to 06200ef96b)