spring-projects / spring-boot

Spring Boot
https://spring.io/projects/spring-boot
Apache License 2.0
73.57k stars 40.3k forks source link

Nested liveness/readiness group not working #40773

Closed kubav182 closed 1 month ago

kubav182 commented 1 month ago

In SB 2.7 i could write this config

management:
  endpoint:
    health:
      show-details: always
      group:
        readiness:
          include: 'readinessState,binders/kafka,db,redis'
        liveness:
          include: 'livenessState,binders/kafka,db,redis'

but in SB3 it does not work because binders/kafka does not exist and app won't start. I can use just binders without kafka. When i look to liveness endpoint it contains binders with nested kafka. So how can i select just kafka in SB3? I tried diffferent separators like : . :/ - and nothing works. I use SB 3.2.4

wilkinsona commented 1 month ago

Does https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.1-Release-Notes#health-group-membership-validation help? That will allow Boot to start when a member doesn't exist as it did by default in previous releases.

kubav182 commented 1 month ago

@wilkinsona yes that works. But it is strange because I include something wrong for validation but it is really included if I skip the validation.

wilkinsona commented 1 month ago

Assuming that binders is a composite and that kafka exists as a component of that composite, I can't see a problem with the configuration that you tried. I guess you're using Spring Cloud Stream and its Kafka binder but I can't tell for certain.

If you would like us to spend some more time investigating, please spend some time providing a complete yet minimal sample that reproduces the problem. You can share it with us by pushing it to a separate repository on GitHub or by zipping it up and attaching it to this issue.

kubav182 commented 1 month ago

It will take some time to get working example with kafka locally. You are right I'm using spring cloud stream with kafka binder. The validator does not see any contributor in "binders" contributor for name "kafka". Separator / is ok as I see in code.

contributor = ((NamedContributors<?>) contributor).getContributor(path[pathOffset]); returns null for "kafka"

But in json actuator/health/rediness it is there if I skip the validation.

spring-projects-issues commented 1 month ago

If you would like us to look at this issue, please provide the requested information. If the information is not provided within the next 7 days this issue will be closed.

spring-projects-issues commented 1 month ago

Closing due to lack of requested feedback. If you would like us to look at this issue, please provide the requested information and we will re-open the issue.