influxdata/influxdb · error · NamespaceNameError

namespace name length must be between and characters

Error message

namespace name {} length must be between {} and {} characters

What it means

NamespaceNameError::LengthConstraint is returned when a namespace name's length falls outside the allowed range defined by LENGTH_CONSTRAINT. The message reports the provided name plus the minimum and maximum allowed lengths. The library enforces this to keep namespace identifiers within storage and URL-safety bounds.

Solutions

  1. Read the reported min/max in the message and shorten (or lengthen) the name to fit.
  2. Truncate long programmatic names to the maximum length before constructing the NamespaceName.
  3. Hash or abbreviate long identifiers instead of concatenating full prefixes.
  4. Pre-validate name.len() against the length bounds in your code before calling the API.

Example fix

// before
let ns = NamespaceName::new(&very_long_name)?; // may exceed max length
// after
let name = &very_long_name[..very_long_name.len().min(MAX_LEN)];
let ns = NamespaceName::new(name)?;
Defensive patterns

Strategy: validation

Validate before calling

const MIN: usize = 1; // check LENGTH_CONSTRAINT bounds from data_types
const MAX: usize = 64;
fn name_length_ok(s: &str) -> bool {
    (MIN..=MAX).contains(&s.chars().count())
}

Try / catch

match NamespaceName::new(name) {
    Ok(ns) => use(ns),
    Err(NamespaceNameError::LengthConstraint { name }) => {
        log::error!("'{name}' length out of allowed range; truncating");
        NamespaceName::new(&truncate(name))
    }
    Err(e) => return Err(e.into()),
}

Prevention

When it happens

Trigger: Calling NamespaceName::new (or try_from(&str)) with a name shorter than LENGTH_CONSTRAINT.start() or longer than LENGTH_CONSTRAINT.end(), e.g. an empty-derived name or a very long bucket name used as a database name.

Common situations: Auto-generated database names from long bucket/team prefixes exceeding the max length; empty names after trimming; programmatic name generation without length checks.

Understand the failure class

Background: "value must be between 0 and 1" / "out of range" / "must not be negative" errors: fixing range-validation failures across open-source libraries — this error's family across 42 libraries.

Related errors


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

Appendix: source

Thrown at core/data_types/src/namespace_name.rs:36

/// & bucket string pair.
#[derive(Debug, Error)]
pub enum OrgBucketMappingError {
    /// An error returned when the org, or bucket string contains invalid
    /// characters.
    #[error("invalid namespace name: {0}")]
    InvalidNamespaceName(#[from] NamespaceNameError),

    /// Either the org, or bucket is an empty string.
    #[error("missing org/bucket value")]
    NoOrgBucketSpecified,
}

/// [`NamespaceName`] name validation errors.
#[derive(Debug, Error)]
pub enum NamespaceNameError {
    /// The provided namespace name does not fall within the valid length of a
    /// namespace.
    #[error(
        "namespace name {} length must be between {} and {} characters",
        name,
        LENGTH_CONSTRAINT.start(),
        LENGTH_CONSTRAINT.end()
    )]
    LengthConstraint {
        /// The user-provided namespace that failed validation.
        name: String,
    },

    /// The provided namespace name contains an unacceptable character.
    #[error(
        "namespace name '{}' contains invalid character, character number {} \
        is not allowed",
        name,
        bad_char_offset
    )]
    BadChars {

View on GitHub (pinned to 06200ef96b)