[
https://issues.apache.org/jira/browse/CAMEL-24512?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Work on CAMEL-24512 started by Andrea Cosentino.
------------------------------------------------
> camel-spring-boot - error.message is overwritten when several health checks
> report DOWN
> ---------------------------------------------------------------------------------------
>
> Key: CAMEL-24512
> URL: https://issues.apache.org/jira/browse/CAMEL-24512
> Project: Camel
> Issue Type: Bug
> Components: camel-spring-boot
> Reporter: Andrea Cosentino
> Assignee: Andrea Cosentino
> Priority: Minor
> Fix For: 4.23.0
>
>
> When several health checks report DOWN, only the last error message survives
> in the actuator output.
> {{CamelHealthCheckIndicator.doHealthCheck}} loops over every result and
> passes the same {{Health.Builder}} to
> {{CamelHealthHelper.applyHealthDetail}}:
> {code:java}
> for (HealthCheck.Result result : results) {
> ...
> builder.withDetail(result.getCheck().getId(), result.getState().name());
> CamelHealthHelper.applyHealthDetail(builder, result, exposureLevel);
> {code}
> {{applyHealthDetail}} writes the message to a flat, top-level key:
> {code:java}
> result.getError().ifPresent(error -> {
> builder.withDetail("error.message", error.getMessage());
> {code}
> Spring Boot's {{Health.Builder.withDetail}} is a {{Map.put}}, so each failing
> check overwrites the previous
> one's {{error.message}}. With two DOWN checks the output carries only the
> second message, while the per-check
> {{<id>.data}} maps correctly stay separate:
> {code}
> error.message=second-message
> first.data={...}
> second.data={...}
> {code}
> The first message is only recoverable because the per-check {{data}} map also
> carries {{error.stacktrace}},
> which embeds it - so the message is not strictly lost today, but it is not
> addressable per check either, and
> the top-level key is misleading when more than one check fails.
> *Proposal*
> Write {{error.message}} into the check-scoped {{data}} map alongside the
> other per-check entries, keeping the
> top-level key as well if compatibility requires it. Add a regression test
> with two distinct DOWN results
> asserting that each message is retrievable under its own check id.
> Reported by Luigi De Masi during review of CAMEL-24499.
> ----
> _This issue was drafted by Claude Code on behalf of Andrea Cosentino._
--
This message was sent by Atlassian Jira
(v8.20.10#820010)