influxdata/influxdb · error · GrpcTimeoutParseError
The value contained an unrecognized suffic of
Error message
The value contained an unrecognized suffic of {0:?} What it means
Fired when parsing the gRPC `grpc-timeout` header: the numeric prefix parsed fine but the trailing unit suffix is not one of the gRPC spec's recognized duration units (H, M, S, m, u, n). This is a validation guard over the header string; the offending input is the unrecognized suffix carried in the error payload. Happens for clients emitting non-spec timeout units.
Solutions
- Use one of the valid suffixes: H (hours), M (minutes), S (seconds), m (millis), u (micros), n (nanos)
- Fix the client/intermediary that is emitting a non-standard unit
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at core/data_types/src/lib.rs:2437 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of influxdata/influxdb@06200ef96b (2026-09-19).
Data as JSON: /api/errors/cea37c66494f0b8a.
Report an issue: GitHub.
Appendix: source
Thrown at core/data_types/src/lib.rs:2437
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);
}
let (timeout_value, timeout_unit) = val
// `HeaderValue::to_str` only returns `Ok` if the header contains ASCII so this
// `split_at` will never panic from trying to split in the middle of a character.
// See https://docs.rs/http/1/http/header/struct.HeaderValue.html#method.to_str
//
// `len - 1` also wont panic since we just checked `s.is_empty`.
.split_at(val.len() - 1);
View on GitHub (pinned to 06200ef96b)