influxdata/influxdb · error · GrpcTimeoutParseError

Failed to parse the value; provided

Error message

Failed to parse the value; provided {value:?} and encountered the following error: {err}

What it means

GrpcTimeoutParseError::UnparseableValue, fired when the numeric part of the `grpc-timeout` header cannot be parsed as a u64; the header carried a malformed or overflowing number before the unit suffix.

Solutions

  1. Ensure the value before the suffix is a plain non-negative integer that fits in u64
  2. Strip whitespace or stray characters from the header value
  3. Log the captured `value` field to identify the malformed header source
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at core/data_types/src/lib.rs:2427 when the library encounters an invalid state.

Common situations: See trigger scenarios.

Understand the failure class


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

Appendix: source

Thrown at core/data_types/src/lib.rs:2427

/// A duration pulled from the `grpc-timeout` header, newtype'd so we don't confuse durations at
/// some points and so that we can impl FromStr
#[derive(Debug, Copy, Clone)]
pub struct GrpcTimeoutDuration(pub Duration);

/// An error that can arise from trying to parse the `grpc-timeout` duration
#[derive(thiserror::Error, Debug)]
pub enum GrpcTimeoutParseError {
    /// The header was empty
    #[error("The provided value was empty")]
    EmptyValue,
    /// There were too many digits in the header before the suffix - the grpc spec specifies that
    /// there must be no more than 8.
    #[error(
        "The provided value contained too many digits in the prefix; expected a maximum of 8 but got {0}"
    )]
    TooManyDigits(usize),
    /// The value (number before the suffix) couldn't be parsed to a u64
    #[error(
        "Failed to parse the value; provided {value:?} and encountered the following error: {err}"
    )]
    UnparseableValue {
        /// The value which we couldn't parse
        value: String,
        /// The error arising from the failure to parse
        err: <u64 as FromStr>::Err,
    },
    /// The suffix which specifies the time base (e.g. seconds, hours, milliseconds, etc)
    #[error("The value contained an unrecognized suffic of {0:?}")]
    UnrecognizedSuffix(String),
}

impl FromStr for GrpcTimeoutDuration {
    type Err = GrpcTimeoutParseError;
    fn from_str(val: &str) -> Result<Self, Self::Err> {
        if val.is_empty() {
            return Err(GrpcTimeoutParseError::EmptyValue);

View on GitHub (pinned to 06200ef96b)