Manage baggage with Spring Boot 3 and micrometer

81 views Asked by At

I implemented the following simple application in order to understand how to play with baggage.

application.yaml:

management:
  tracing:
    enabled: true
    baggage:
      enabled: true
      remote-fields:
        - my-token

TokenFilter

@RequiredArgsConstructor
@Slf4j
@Component
public class TokenFilter implements Filter {
    private final Tracer tracer;
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
            throws ServletException, IOException {
        final String myTokenValue = ((HttpServletRequest) servletRequest).getHeader("my_token");
        log.info("Token value is '{}'", myTokenValue);
        try (BaggageInScope myToken = tracer.createBaggageInScope("my_token", myTokenValue)) {
            log.info("Bagage content is {}", myToken.get());
            log.info("All baggages are {}", tracer.getAllBaggage());
        } catch (Exception exc) {
            log.error(exc.getMessage());
        }
        filterChain.doFilter(servletRequest, servletResponse);
    }
}

Controller

@RestController
@RequiredArgsConstructor
@Slf4j
public class SampleController {
    private final Tracer tracer;

    @GetMapping(value = "", produces = MediaType.APPLICATION_JSON_VALUE)
    public void sample() {
        log.info("Baggages are {}", tracer.getAllBaggage());
    }
}

Resulting log

2024-02-27T15:36:24.991+01:00  INFO 3688 --- [nio-8080-exec-1] [65ddf368f5abedefc5907ffcd8e8138e-c5907ffcd8e8138e] c.t.micrometersample.filter.TokenFilter  : Token value is 'token value'
2024-02-27T15:36:24.993+01:00  INFO 3688 --- [nio-8080-exec-1] [65ddf368f5abedefc5907ffcd8e8138e-c5907ffcd8e8138e] c.t.micrometersample.filter.TokenFilter  : Bagage content is null
2024-02-27T15:36:24.993+01:00  INFO 3688 --- [nio-8080-exec-1] [65ddf368f5abedefc5907ffcd8e8138e-c5907ffcd8e8138e] c.t.micrometersample.filter.TokenFilter  : All baggages are {}
2024-02-27T15:36:25.005+01:00  INFO 3688 --- [nio-8080-exec-1] [65ddf368f5abedefc5907ffcd8e8138e-c5907ffcd8e8138e] c.t.m.controller.SampleController        : Baggages are {}

What is missing/incorrect that prevents to properly manage the baggage ?

Regards

Frederic

0

There are 0 answers