Skip to content

Vertx context propagation broken in smallrye health since 3.23.0 #48678

@HerrDerb

Description

@HerrDerb

We have a Vert.x request filter that sets a local value (request header value) on the Vert.x context of the incoming request. Before this change, the duplicated context used to execute the health check was based on the same context that passed through the Vert.x request filter chain.

Recently Correct duplicated context creation in SmallRye Health got merged and might have broken this behaviour.

With this change, a new duplicated context is created before the Vert.x request filter chain is executed. As a result, any modifications made to the context within a Vert.x request filter will not be visible in the health check, since the health check now runs in a context that was duplicated "too early." I am not able anymore to access the put local from the request filter.

Before change

Incoming Request
      |
      v
[Vert.x Request Filter] --(sets local on context)-->
      |
      v
[Duplicate Context for Health Check]
      |
      v
[Health Check Execution]

After change

Incoming Request
      |
      v
      +------------  [Duplicate Context for Health Check during build build up]  <--- context duplicated too early
      |                             |
      |                             |
      v                             v
[Vert.x Request Filter]      [Health Check Execution]
  (sets local on context)      (does NOT see local set by filter)

Reproducer

https://github.com/HerrDerb/quarkus-issue/tree/health-vertx-issue
Test fails with current quarkus version.
Test succeed with 3.23.0

Originally posted by @HerrDerb in #48057 (comment)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions