Skip to content

Migrating from Spring boot 3.5.11 to 4.0.3 : reregister-service-on-failure not working anymore #954

@tahitiangabriel

Description

@tahitiangabriel

Describe the bug
I have a spring boot application (3.5.11) using spring-cloud-starter-consul-discovery (2025.0.1).
I have activated reregister-service-on-failure as the consul may sometimes be restarted.
That works perfectly fine.

Now I'm migrating the app to the lastest version (spring boot 4.03 ans spring cloud 2025.1.1).
Unfortunatly when I restart the consul agent, the app do not re-register anymore.

Sample
1- Here's an example with spring boot 3.5.11 and spring cloud 2025.0.1 (everything works as expected)
consul-client-3.5.9.zip

When I start the app, the service registered :

2026-03-03T15:23:40.271-10:00  INFO 15316 --- [DEMO-SERVICE] [           main] o.s.c.c.s.ConsulServiceRegistry          : Registering service with consul: NewService{id='DEMO-SERVICE-9091', name='DEMO-SERVICE', tags=[], address='10.0.10.5', meta={secure=false}, port=9091, enableTagOverride=null, check=Check{script='null', dockerContainerID='null', shell='null', interval='null', ttl='30s', http='null', method='null', header=null, tcp='null', timeout='null', deregisterCriticalServiceAfter='null', tlsSkipVerify=null, status='null', grpc='null', grpcUseTLS=null}, checks=null}

When I stop the consul agent:

2026-03-03T15:24:39.807-10:00  INFO 9560 --- [DEMO-SERVICE] [TaskScheduler-1] o.apache.http.impl.execchain.RetryExec   : I/O exception (org.apache.http.NoHttpResponseException) caught when processing request to {}->http://localhost:8500: The target server failed to respond
2026-03-03T15:24:39.807-10:00  INFO 9560 --- [DEMO-SERVICE] [TaskScheduler-1] o.apache.http.impl.execchain.RetryExec   : Retrying request to {}->http://localhost:8500
2026-03-03T15:24:39.821-10:00 ERROR 9560 --- [DEMO-SERVICE] [TaskScheduler-1] o.s.c.c.discovery.ConsulCatalogWatch     : Error watching Consul CatalogServices

com.ecwid.consul.transport.TransportException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:8500 [localhost/127.0.0.1, 
...
Caused by: java.net.ConnectException: Connection refused: getsockopt

When I restart the consult agent, the TtlScheduler is called and the service is re-registered :

2026-03-03T15:24:47.355-10:00  WARN 9560 --- [DEMO-SERVICE] [pool-2-thread-1] o.s.cloud.consul.discovery.TtlScheduler  : OperationException(statusCode=404, statusMessage='Not Found', statusContent='Unknown check ID "service:DEMO-SERVICE-9091". Ensure that the check ID is passed, not the check name.')
2026-03-03T15:24:47.355-10:00  INFO 9560 --- [DEMO-SERVICE] [pool-2-thread-1] o.s.cloud.consul.discovery.TtlScheduler  : Re-register NewService{id='DEMO-SERVICE-9091', name='DEMO-SERVICE', tags=[], address='10.0.10.5', meta={secure=false}, port=9091, enableTagOverride=null, check=Check{script='null', dockerContainerID='null', shell='null', interval='null', ttl='30s', http='null', method='null', header=null, tcp='null', timeout='null', deregisterCriticalServiceAfter='null', tlsSkipVerify=null, status='null', grpc='null', grpcUseTLS=null}, checks=null}

2- Here's the same example with spring boot 4.0.3 and spring cloud 2025.1.1 (re-registering doesn't occured)
consul-client-4.0.3.zip

At startup the service is registered :

2026-03-03T15:32:08.116-10:00  INFO 17028 --- [DEMO-SERVICE] [           main] o.s.c.c.s.ConsulServiceRegistry          : Registering service with consul: [NewService@1d9af731 id = 'DEMO-SERVICE-9091', name = 'DEMO-SERVICE', tags = list[[empty]], address = '10.0.10.5', meta = map['secure' -> 'false'], port = 9091, enableTagOverride = [null], check = [NewService.Check@39afe59f args = [null], dockerContainerID = [null], shell = [null], interval = [null], ttl = '30s', http = [null], method = [null], header = [null], tcp = [null], timeout = [null], deregisterCriticalServiceAfter = [null], tlsSkipVerify = [null], status = [null], grpc = [null], grpcUseTLS = [null]], checks = [null]]

When I stop the consul agent:

2026-03-03T15:33:55.550-10:00 ERROR 17028 --- [DEMO-SERVICE] [TaskScheduler-1] o.s.c.c.discovery.ConsulCatalogWatch     : Error watching Consul CatalogServices

org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://localhost:8500/v1/catalog/services": null

When I restart the consult agent, nothing happens (no log, no re-register). I have to restart the application.

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