Migrating from Spring boot 3.5.11 to 4.0.3 : reregister-service-on-failure not working anymore
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 48/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 静か
- 技術スタック
- java, spring-boot
調査の方向性
まず、添付された2つの consul-client サンプルを実行し、Spring Boot 3.5.11/Spring Cloud 2025.0.1 と Spring Boot 4.0.3/Spring Cloud 2025.1.1 の動作を比較します。Consul エージェントの再起動前後で ConsulCatalogWatch と TtlScheduler を追跡します。Consul の再起動後に、アプリケーションを再起動せずに新しい方のサンプルがサービスを再登録できれば完了です。
索引モデルが issue の本文から書いたものです。
説明
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.
- 主要言語
- Java
- スター
- 821
- フォーク
- 539
- 平均マージ
- 5時間 34分
- マージ済み PR(30日)
- 13
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
spring-cloud/spring-cloud-consul のほかの issue
-
Consul 5.0.1 drops stale and consistent flags from health and catalog HTTP requests対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
spring-cloud/spring-cloud-consul#1029 ·
メンテナーはふだん 1 日以内に返信
-
waiting-for-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
spring-cloud/spring-cloud-consul#984 ·
メンテナーはふだん 1 日以内に返信
-
spring.cloud.consul.config.prefixes documentation update再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープンdocumentation
難易度 1/5 1〜3時間 初心者へのやさしさ 78/100
spring-cloud/spring-cloud-consul#746 · コメント 5 件 ·
メンテナーはふだん 1 日以内に返信
-
waiting-for-triage
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
spring-cloud/spring-cloud-consul#996 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
waiting-for-triage
難易度 3/5 1〜2日 初心者へのやさしさ 52/100
spring-cloud/spring-cloud-consul#951 · コメント 4 件 ·
メンテナーはふだん 1 日以内に返信
spring-cloud/spring-cloud-consul の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
-
account bug communication lecture
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
area/server bug P2
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
modelcontextprotocol/java-sdk#1196 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
-
Consumer progress rows interleave topics with equal queue IDs対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
apache/rocketmq-dashboard#7250 ·
メンテナーはふだん 3 日以内に返信