qdrant-helm icon indicating copy to clipboard operation
qdrant-helm copied to clipboard

Got actix_http::h1::dispatcher: stream error: request parse error: invalid HTTP version specified when upgrade the qdrant image to 1.8.0

Open zoechou opened this issue 1 year ago • 1 comments

We upgrade qdrant image version from 1.7.4 to 1.8.0, and qdrant-helm version from 0.7.6 to 0.8.0. When starting qdrant server, found error message actix_http::h1::dispatcher: stream error: request parse error: invalid HTTP version specified.

Current Behavior

Found error message actix_http::h1::dispatcher: stream error: request parse error: invalid HTTP version specified from server logs

Steps to Reproduce

  1. helm upgrade --install qdrant qdrant/qdrant -f apply_value.yaml

    content of apply_value.yaml

    tag: 1.8.0
    metrics:
      serviceMonitor:
        enabled: true
        additionalLabels:
          prometheus: kube-prometheus
          release: kube
    apiKey: true
    

Expected Behavior

No error message while staring qdrant server

Possible Solution

Context (Environment)

EKS 1.25

Detailed Description

Starting initializing for pod 0
           _                 _    
  __ _  __| |_ __ __ _ _ __ | |_  
 / _` |/ _` | '__/ _` | '_ \| __| 
| (_| | (_| | | | (_| | | | | |_  
 \__, |\__,_|_|  \__,_|_| |_|\__| 
    |_|                           

Version: 1.8.0, build: e6411907
Access web UI at http://localhost:6333/dashboard

2024-03-07T07:40:02.909977Z  INFO storage::content_manager::consensus::persistent: Initializing new raft state at ./storage/raft_state.json    
2024-03-07T07:40:02.921981Z  INFO qdrant::consensus: With current tick period of 100ms, leader will be established in approximately 4000ms. To avoid rejected operations - add peers and submit operations only after this period.    
2024-03-07T07:40:02.925852Z  INFO qdrant: Telemetry reporting enabled, id: cd1991a5-4177-4ebc-89cc-28c63d48bdfb    
2024-03-07T07:40:02.926209Z  INFO qdrant::tonic: TLS disabled for internal gRPC API    
2024-03-07T07:40:02.927160Z  INFO qdrant::actix: TLS disabled for REST API    
2024-03-07T07:40:02.927224Z  INFO qdrant::actix: Qdrant HTTP listening on 6333    
2024-03-07T07:40:02.927228Z  INFO actix_server::builder: Starting 7 workers
2024-03-07T07:40:02.927234Z  INFO actix_server::server: Actix runtime found; starting in Actix runtime
2024-03-07T07:40:02.929366Z  INFO qdrant::tonic: Qdrant gRPC listening on 6334    
2024-03-07T07:40:02.929384Z  INFO qdrant::tonic: TLS disabled for gRPC API    
2024-03-07T07:43:16.604665Z ERROR actix_http::h1::dispatcher: stream error: request parse error: invalid Header provided

Possible Implementation

zoechou avatar Mar 07 '24 09:03 zoechou

I came across this issue yesterday. I'm not sure if it is still a problem, but I had the same error message from actix yesterday. I figured I would share the solution.

Our error

server-1        | {"timestamp":"2025-07-17T14:58:42.049992Z","level":"ERROR","fields":{"message":"stream error: request parse error: in
valid Header provided"},"target":"actix_http::h1::dispatcher"}

Problem and solution

The problem ended up being that we were making a POST request with an empty body and the HTTP client used was not setting the header: Content-Length: 0. The solution was to explicitly set the header: Content-Length: 0 for POST requests with an empty body.

Some HTTP clients are "smart" enough to add Content-Length: 0 to the headers when making a POST request without a body, but some are not. It turns out that when a POST request was received with and empty body and without the Content-Length: 0 header, our actix_web server would think that the body was "chunked" and would then try and read it as a stream, hence "stream error".

jed-richards avatar Jul 18 '25 13:07 jed-richards