influxdata/influxdb · error · Error

No org_id found

Error message

No org_id found

What it means

PluginError::InvalidCronSyntax wraps cron::error::Error and is raised when the cron expression supplied for a scheduled trigger cannot be parsed by the cron crate. The payload contains the parser's message. Validation happens when the trigger is created/enabled, so a bad expression prevents the trigger from being installed.

Solutions

  1. Validate the cron expression with a parser compatible with the `cron` crate (6 or 7 fields including seconds, e.g. '0 0 * * * *').
  2. Replace shortcuts like @hourly with explicit expressions ('0 0 * * * *').
  3. Count the fields: the crate expects seconds, minutes, hours, day-of-month, month, day-of-week (and optional year).
  4. Test the expression with `cron parse` or a quick Rust/Python check using the same crate semantics before creating the trigger.

Example fix

// before
influxdb3 trigger create --trigger-spec cron:@daily my_trig ...   # unsupported alias
// after
influxdb3 trigger create --trigger-spec 'cron:0 0 0 * * *' my_trig ...
Defensive patterns

Strategy: validation

Validate before calling

# validate with the same cron crate semantics (6-field, seconds first)
echo '0 0 0 * * *' | cronexpr --check || echo "invalid cron syntax"

Type guard

fn valid_cron(expr: &str) -> bool { cron::Schedule::from_str(expr).is_ok() }

Try / catch

match result {
    Err(PluginError::InvalidCronSyntax(e)) => error!("bad cron expr: {e}; use 6-field form like '0 0 * * * *'"),
    Ok(v) => v,
}

Prevention

When it happens

Trigger: Running `influxdb3 trigger create --trigger-spec cron:<expr>` (or the SQL/API equivalent) with a malformed expression: wrong field count, invalid characters, out-of-range values, or expressions using syntax the cron crate doesn't support (e.g. @hourly shortcuts or seconds-field mismatches).

Common situations: Copying a 5-field Unix cron expression where 6/7-field (with seconds) is expected or vice versa; using @daily/@hourly aliases unsupported by the parser; interval strings like */5 with stray spaces.

Understand the failure class

Background: "Invalid ... format", "must be in format X", "does not look like a ..." — invalid argument format errors across CLI tools and libraries — this error's family across 17 libraries.

Related errors


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

Appendix: source

Thrown at core/client_util/src/namespace_translation.rs:28

    InvalidNamespace { namespace: String, reason: String },
}

impl Error {
    fn new(namespace: impl Into<String>, reason: impl Into<String>) -> Self {
        Self::InvalidNamespace {
            namespace: namespace.into(),
            reason: reason.into(),
        }
    }
}

/// Splits up the namespace name into org_id and bucket_id
pub fn split_namespace(namespace: &str) -> Result<(&str, &str), Error> {
    let mut iter = namespace.split('_');
    let org_id = iter.next().ok_or_else(|| Error::new(namespace, "empty"))?;

    if org_id.is_empty() {
        return Err(Error::new(namespace, "No org_id found"));
    }

    let bucket_id = iter
        .next()
        .ok_or_else(|| Error::new(namespace, "Could not find '_'"))?;

    if bucket_id.is_empty() {
        return Err(Error::new(namespace, "No bucket_id found"));
    }

    if iter.next().is_some() {
        return Err(Error::new(namespace, "More than one '_'"));
    }

    Ok((org_id, bucket_id))
}

#[cfg(test)]

View on GitHub (pinned to 06200ef96b)