Skip to content

[SmallRye Messaging] - Backpressure support via @OnOverflow broken after upgrading to Quarkus 3.22.x #47670

Closed
@ricardozanini

Description

@ricardozanini

Describe the bug

Hi!

After bumping the Quarkus Reactive Messaging HTTP extension (https://github.com/quarkiverse/quarkus-reactive-messaging-http) from Quarkus 3.21.x → 3.22.1, all of the sink backpressure tests annotated with @OnOverflow are failing. In particular, in:

https://github.com/quarkiverse/quarkus-reactive-messaging-http/blob/2.5.0/deployment/src/test/java/io/quarkus/reactivemessaging/http/sink/HttpSinkBackpressureTest.java#L43

and

https://github.com/quarkiverse/quarkus-reactive-messaging-http/blob/2.5.0/deployment/src/test/java/io/quarkus/reactivemessaging/http/sink/HttpSinkBackpressureTest.java#L58

The configured buffer sizes and THROW_EXCEPTION strategies are simply ignored, so emissions either block forever or succeed unbounded instead of triggering overflow.

Expected behavior

An emitter declared as

@Channel("my-http-sink")
@OnOverflow(Strategy.THROW_EXCEPTION)
Emitter<Object> emitterThrowingOnOverflow;

should immediately fail the second send(), and an emitter declared with

@Channel("my-http-sink2")
@OnOverflow(value = Strategy.BUFFER, bufferSize = 10)
Emitter<Object> emitterBufferingOnOverflow;

should buffer exactly 10 in-flight messages (1 in progress + 10 queued), then reject the 12th.

Actual behavior

  • The “throw on overflow” emitter does not throw on the second send.
  • The “buffer up to 10” emitter accepts all 12 sends, draining only as the test releases the endpoint.
  • Inspection shows the buffer-size annotation isn’t being picked up from MicroProfile config (it always falls back to the default).

How to Reproduce?

  1. Clone the v2.5.0 tag of the extension.
  2. In the root pom.xml, set Quarkus BOM to 3.22.1.
  3. Run the failing tests in deployment/src/test/java/.../HttpSinkBackpressureTest.java.

Output of uname -a or ver

Darwin 24.4.0 Darwin Kernel Version 24.4.0: Fri Apr 11 18:33:47 PDT 2025; root:xnu-11417.101.15~117/RELEASE_ARM64_T6030 arm64

Output of java -version

openjdk version "17.0.9" 2023-10-17 OpenJDK Runtime Environment GraalVM CE 17.0.9+9.1 (build 17.0.9+9-jvmci-23.0-b22) OpenJDK 64-Bit Server VM GraalVM CE 17.0.9+9.1 (build 17.0.9+9-jvmci-23.0-b22, mixed mode, sharing)

Quarkus version or git rev

3.22.1

Build tool (ie. output of mvnw --version or gradlew --version)

Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937) Maven home: /opt/homebrew/Cellar/maven/3.9.9/libexec Java version: 17.0.9, vendor: GraalVM Community, runtime: /Users/ricferna/.sdkman/candidates/java/17.0.9-graalce Default locale: en_CA, platform encoding: UTF-8 OS name: "mac os x", version: "15.4.1", arch: "aarch64", family: "mac"

Additional information

I verified that everything works normally on Quarkus 3.21.x but fails immediately after upgrading to 3.22.1. My investigation pointed at the shared-context rewrite in #46174. I’m happy to supply a minimal reproducer or pair on a fix.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions