spring-cloud-consul icon indicating copy to clipboard operation
spring-cloud-consul copied to clipboard

AOT health chek 404 Unknown check ID for 4.2.1

Open wdubaiyu opened this issue 9 months ago • 2 comments

spring: application: name: demo cloud: consul: discovery: preferIpAddress: true heartbeat: enabled: true

2025-04-02T22:59:09.530+08:00 INFO 7280 --- [demo] [ main] com.example.demo.DemoApplication : Starting AOT-processed DemoApplication using Java 22.0.1 with PID 7280 (D:\kn\demo\build\native\nativeCompile\demo.exe started by wdubaiyu in D:\kn\demo\build\native\nativeCompile) 2025-04-02T22:59:09.530+08:00 INFO 7280 --- [demo] [ main] com.example.demo.DemoApplication : No active profile set, falling back to 1 default profile: "default" 2025-04-02T22:59:09.531+08:00 INFO 7280 --- [demo] [ main] o.s.cloud.context.scope.GenericScope : BeanFactory id=7389954d-47ba-315d-8456-723ce320eccc 2025-04-02T22:59:09.557+08:00 INFO 7280 --- [demo] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http) 2025-04-02T22:59:09.558+08:00 INFO 7280 --- [demo] [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2025-04-02T22:59:09.558+08:00 INFO 7280 --- [demo] [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.39]
2025-04-02T22:59:09.563+08:00 INFO 7280 --- [demo] [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2025-04-02T22:59:09.563+08:00 INFO 7280 --- [demo] [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 33 ms 2025-04-02T22:59:10.582+08:00 INFO 7280 --- [demo] [ main] o.s.cloud.commons.util.InetUtils : Cannot determine local hostname 2025-04-02T22:59:11.599+08:00 INFO 7280 --- [demo] [ main] o.s.cloud.commons.util.InetUtils : Cannot determine local hostname 2025-04-02T22:59:11.607+08:00 WARN 7280 --- [demo] [ main] iguration$LoadBalancerCaffeineWarnLogger : Spring Cloud LoadBalancer is currently working wit h the default cache. While this cache implementation is useful for development and tests, it's recommended to use Caffeine cache in production.You can switch to using Caffeine cache, by adding it and org.springframework.cache.caffeine.CaffeineCacheManager to the classpath. 2025-04-02T22:59:11.610+08:00 INFO 7280 --- [demo] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path '/' 2025-04-02T22:59:11.611+08:00 INFO 7280 --- [demo] [ main] o.s.c.c.s.ConsulServiceRegistry : Registering service with consul: NewService{id='de mo', name='demo', tags=[], address='localhost', meta={secure=false}, port=8080, 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} 2025-04-02T22:59:11.617+08:00 ERROR 7280 --- [demo] [pool-5-thread-1] o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task

com.ecwid.consul.v1.OperationException: OperationException(statusCode=404, statusMessage='Not Found', statusContent='Unknown check ID "service:demo". Ensure that the check ID is passed, not the check name.') at com.ecwid.consul.v1.agent.AgentConsulClient.agentCheckPass(AgentConsulClient.java:211) ~[demo.exe:na] at com.ecwid.consul.v1.ConsulClient.agentCheckPass(ConsulClient.java:270) ~[demo.exe:na] at org.springframework.cloud.consul.discovery.TtlScheduler$ConsulHeartbeatTask.lambda$run$0(TtlScheduler.java:131) ~[na:na] at org.springframework.cloud.consul.discovery.TtlScheduler$ConsulHeartbeatTask.possiblyReregisterIfFails(TtlScheduler.java:156) ~[na:na] at org.springframework.cloud.consul.discovery.TtlScheduler$ConsulHeartbeatTask.run(TtlScheduler.java:131) ~[na:na] at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[na:na] at [email protected]/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[na:na] at [email protected]/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358) ~[demo.exe:na] at [email protected]/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[na:na] at [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[demo.exe:na] at [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[na:na] at [email protected]/java.lang.Thread.runWith(Thread.java:1583) ~[demo.exe:na] at [email protected]/java.lang.Thread.run(Thread.java:1570) ~[demo.exe:na] at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:853) ~[demo.exe:na] at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:829) ~[demo.exe:na]

wdubaiyu avatar Apr 02 '25 15:04 wdubaiyu

curl \http://127.0.0.1:8500/v1/agent/checks result '{}' Health check not registered

wdubaiyu avatar Apr 02 '25 15:04 wdubaiyu

GSON serialize NewService.class ,lost Check.class

com.ecwid.consul.v1.agent.agentServiceRegister(NewService newService, String token)

UrlParameters tokenParam = token != null ? new SingleUrlParameters("token", token) : null; String json = GsonFactory.getGson().toJson(newService); System.out.println("agentServiceRegister json = " + json); HttpResponse httpResponse = this.rawClient.makePutRequest("/v1/agent/service/register", json, new UrlParameters[]{tokenParam}); if (httpResponse.getStatusCode() == 200) { return new Response((Object)null, httpResponse); } else { throw new OperationException(httpResponse); }

Image

in aot

Image

wdubaiyu avatar Apr 02 '25 16:04 wdubaiyu