{"record":{"id":"67376311d0f710b8","repo":"influxdata/influxdb","slug":"hyper-error-0","errorCode":null,"errorMessage":"hyper error: {0}","messagePattern":"hyper error: (.+?)","errorType":"error_code","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"influxdb3_server/src/lib.rs","lineNumber":63,"sourceCode":"use tokio_rustls::rustls::pki_types::pem::PemObject;\nuse tokio_rustls::rustls::pki_types::{CertificateDer, PrivateKeyDer};\nuse tokio_rustls::rustls::{ServerConfig, SupportedProtocolVersion};\nuse tokio_util::sync::CancellationToken;\nuse trace::TraceCollector;\nuse trace_http::ctx::TraceHeaderParser;\nuse trace_http::metrics::{MetricFamily, RequestMetrics};\nuse trace_http::tower::{ServiceProtocol, TraceLayer};\nuse unified_service::{RemoteAddrLayer, UnifiedService};\n\npub const PRODUCT_NAME: &str = \"InfluxDB 3 Core\";\npub const INFLUXDB3_BUILD: &str = \"Core\";\n\n/// Version string combining the product name, [`influxdb3_process::INFLUXDB3_VERSION`], and [`influxdb3_process::INFLUXDB3_GIT_HASH`].\npub static VERSION_STRING: LazyLock<String> = LazyLock::new(|| build_version_string(PRODUCT_NAME));\n\n#[derive(Debug, Error)]\npub enum Error {\n    #[error(\"hyper error: {0}\")]\n    Hyper(#[from] hyper::Error),\n\n    #[error(\"http error: {0}\")]\n    Http(#[from] Box<http::Error>),\n\n    #[error(\"database not found {db_name}\")]\n    DatabaseNotFound { db_name: String },\n\n    #[error(\"datafusion error: {0}\")]\n    DataFusion(#[from] datafusion::error::DataFusionError),\n\n    #[error(\"influxdb3_write error: {0}\")]\n    InfluxDB3Write(#[from] influxdb3_write::Error),\n\n    #[error(\"from hex error: {0}\")]\n    FromHex(#[from] hex::FromHexError),\n\n    #[error(\"io error: {0}\")]","sourceCodeStart":45,"sourceCodeEnd":81,"githubUrl":"https://github.com/influxdata/influxdb/blob/06200ef96ba82c5f6727e5038a83af8e722c6875/influxdb3_server/src/lib.rs#L45-L81","documentation":"A variant of influxdb3_server::Error produced when an underlying hyper::Error is propagated via #[from]. It means the HTTP server's transport layer (hyper) failed while reading the request or writing the response — connection resets, aborted requests, malformed HTTP framing, timeouts at the protocol level.","triggerScenarios":"Client disconnects mid-request or mid-response; request body stream aborts; hyper fails to parse a malformed HTTP request; response body channel is dropped while hyper is still streaming.","commonSituations":"Clients with aggressive timeouts canceling slow queries; load balancers closing idle connections; network interruptions between client and server; a client sending invalid HTTP framing.","solutions":["Inspect the source hyper error and server logs to identify whether it is a client disconnect (often benign) or a server-side transport fault","Retry the request from the client with a longer timeout / keep-alive settings","Check for intermediary proxies or load balancers dropping connections and adjust their idle timeouts"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"match err {\n    ServerError::Hyper(h) if h.is_incomplete_message() || h.is_parse() => {\n        // transport failure: retry with backoff, or treat client disconnect as benign\n    }\n    ServerError::Hyper(h) => log::error!(\"hyper transport error: {h}\"),\n    _ => return Err(err),\n}","preventionTips":["Set client timeouts longer than the slowest expected query","Enable keep-alive and align load-balancer idle timeouts with server settings","Log the inner hyper error to distinguish client disconnects from server faults"],"tags":["http","network","hyper"],"backgroundTag":"http-request-failed","analyzedSha":"06200ef96ba82c5f6727e5038a83af8e722c6875","analyzedAt":"2026-09-19T12:55:30.003Z","contentChangedAt":"2026-09-19T12:55:30.003Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}