Skip to content

Using request header "Expect: 100-continue" ends up in confusing warning "ChannelOutboundBuffer: Failed to mark a promise as success because it has succeeded already" #3752

@helmut-hackl-dynatrace

Description

@helmut-hackl-dynatrace

We are using Spring Cloud Gateway with Netty and noticed the following:
If an http request (for example a file upload) that includes the header
Expect: 100-continue
gets routed to an endpoint the client receives the response as expected
an 100 first and then 202 (that the file was successfully transferred).

HTTP/2 100 
HTTP/2 202 
vary: Origin,Access-Control-Request-Method,Access-Control-Request-Headers,Accept-Encoding
date: Wed, 07 May 2025 11:49:24 GMT
...
content-type: application/json
x-content-type-options: nosniff
x-xss-protection: 0
cache-control: no-cache, no-store, max-age=0, must-revalidate
pragma: no-cache
expires: 0
strict-transport-security: max-age=31536000 ; includeSubDomains
referrer-policy: strict-origin-when-cross-origin

{"id":"..."}

Everything is fine besides the irritating WARNING log
ChannelOutboundBuffer: Failed to mark a promise as success because it has succeeded already

Expected Behavior

no warning log

Actual Behavior

warning log

Your Environment

  • Reactor version(s) used: reactor-netty-core:1.2.5
  • Other relevant libraries versions (eg. netty, ...): netty 4.1.119.Final, spring cloud gateway: 4.2.1, spring boot: 3.4.5
  • JVM version (java -version): Java 21.0.1
  • OS and version (eg. uname -a): linux

Metadata

Metadata

Assignees

Labels

Type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions