Hello Spring Cloud Team,

Describe the bug I'm using Spring Boot 2.4.6 and Spring Cloud 2020.0.3.

I use the new way of Spring Boot 2.4 to import data via the spring.config.import with DiscoveryClient(Eureka), but the application doesn't make the extra round trip at startup to locate the service registration.

However I have set spring.cloud.config.discovery.enabled=true and the eureka.client.serviceUrl.defaultZone properties but the application try to contact the config Server at it's default address http://localhost:8888/.

Sample Here is a sample project initialized from Spring Initializr to reproduce the bug : https://github.com/edethoor/SB246.

This is my application.yml file :

spring:
  cloud:
    config:
      label: dev
      discovery:
        enabled: true
  config:
    import: "configserver:"

eureka:
  client:
    service-url:
      defaultZone: "http://awl-cloud-eureka:8080/eureka/"

This are the startup logs :

C:\Javatools\java\jdk-11.0.1\bin\java.exe -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:57957,suspend=y,server=n -Ddebug -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -javaagent:C:\Utilisateurs\a556724\AppData\Local\JetBrains\IntelliJIdea2021.1\captureAgent\debugger-agent.jar -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -Dfile.encoding=UTF-8 -classpath "C:\Repository\ede\SD24\SB246\target\classes;C:\Utilisateurs\a556724\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.4.6\spring-boot-starter-web-2.4.6.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\boot\spring-boot-starter\2.4.6\spring-boot-starter-2.4.6.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.4.6\spring-boot-starter-logging-2.4.6.jar;C:\Utilisateurs\a556724\.m2\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;C:\Utilisateurs\a556724\.m2\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;C:\Utilisateurs\a556724\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.13.3\log4j-to-slf4j-2.13.3.jar;C:\Utilisateurs\a556724\.m2\repository\org\apache\logging\log4j\log4j-api\2.13.3\log4j-api-2.13.3.jar;C:\Utilisateurs\a556724\.m2\repository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;C:\Utilisateurs\a556724\.m2\repository\org\yaml\snakeyaml\1.27\snakeyaml-1.27.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.4.6\spring-boot-starter-json-2.4.6.jar;C:\Utilisateurs\a556724\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.11.4\jackson-datatype-jdk8-2.11.4.jar;C:\Utilisateurs\a556724\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.11.4\jackson-datatype-jsr310-2.11.4.jar;C:\Utilisateurs\a556724\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.11.4\jackson-module-parameter-names-2.11.4.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\spring-web\5.3.7\spring-web-5.3.7.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\spring-beans\5.3.7\spring-beans-5.3.7.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\spring-webmvc\5.3.7\spring-webmvc-5.3.7.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\spring-aop\5.3.7\spring-aop-5.3.7.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\spring-context\5.3.7\spring-context-5.3.7.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\spring-expression\5.3.7\spring-expression-5.3.7.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\cloud\spring-cloud-starter-config\3.0.4\spring-cloud-starter-config-3.0.4.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\cloud\spring-cloud-starter\3.0.3\spring-cloud-starter-3.0.3.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\cloud\spring-cloud-context\3.0.3\spring-cloud-context-3.0.3.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\security\spring-security-crypto\5.4.6\spring-security-crypto-5.4.6.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\cloud\spring-cloud-commons\3.0.3\spring-cloud-commons-3.0.3.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\security\spring-security-rsa\1.0.10.RELEASE\spring-security-rsa-1.0.10.RELEASE.jar;C:\Utilisateurs\a556724\.m2\repository\org\bouncycastle\bcpkix-jdk15on\1.68\bcpkix-jdk15on-1.68.jar;C:\Utilisateurs\a556724\.m2\repository\org\bouncycastle\bcprov-jdk15on\1.68\bcprov-jdk15on-1.68.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\cloud\spring-cloud-config-client\3.0.4\spring-cloud-config-client-3.0.4.jar;C:\Utilisateurs\a556724\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.11.4\jackson-annotations-2.11.4.jar;C:\Utilisateurs\a556724\.m2\repository\org\apache\httpcomponents\httpclient\4.5.13\httpclient-4.5.13.jar;C:\Utilisateurs\a556724\.m2\repository\org\apache\httpcomponents\httpcore\4.4.14\httpcore-4.4.14.jar;C:\Utilisateurs\a556724\.m2\repository\commons-codec\commons-codec\1.15\commons-codec-1.15.jar;C:\Utilisateurs\a556724\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.11.4\jackson-databind-2.11.4.jar;C:\Utilisateurs\a556724\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.11.4\jackson-core-2.11.4.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\cloud\spring-cloud-starter-netflix-eureka-client\3.0.3\spring-cloud-starter-netflix-eureka-client-3.0.3.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\cloud\spring-cloud-netflix-eureka-client\3.0.3\spring-cloud-netflix-eureka-client-3.0.3.jar;C:\Utilisateurs\a556724\.m2\repository\com\netflix\eureka\eureka-client\1.10.14\eureka-client-1.10.14.jar;C:\Utilisateurs\a556724\.m2\repository\com\netflix\netflix-commons\netflix-eventbus\0.3.0\netflix-eventbus-0.3.0.jar;C:\Utilisateurs\a556724\.m2\repository\com\netflix\netflix-commons\netflix-infix\0.3.0\netflix-infix-0.3.0.jar;C:\Utilisateurs\a556724\.m2\repository\commons-jxpath\commons-jxpath\1.3\commons-jxpath-1.3.jar;C:\Utilisateurs\a556724\.m2\repository\joda-time\joda-time\2.3\joda-time-2.3.jar;C:\Utilisateurs\a556724\.m2\repository\org\antlr\antlr-runtime\3.4\antlr-runtime-3.4.jar;C:\Utilisateurs\a556724\.m2\repository\org\antlr\stringtemplate\3.2.1\stringtemplate-3.2.1.jar;C:\Utilisateurs\a556724\.m2\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;C:\Utilisateurs\a556724\.m2\repository\com\google\code\gson\gson\2.8.6\gson-2.8.6.jar;C:\Utilisateurs\a556724\.m2\repository\org\apache\commons\commons-math\2.2\commons-math-2.2.jar;C:\Utilisateurs\a556724\.m2\repository\com\thoughtworks\xstream\xstream\1.4.16\xstream-1.4.16.jar;C:\Utilisateurs\a556724\.m2\repository\io\github\x-stream\mxparser\1.2.1\mxparser-1.2.1.jar;C:\Utilisateurs\a556724\.m2\repository\xmlpull\xmlpull\1.1.3.1\xmlpull-1.1.3.1.jar;C:\Utilisateurs\a556724\.m2\repository\javax\ws\rs\jsr311-api\1.1.1\jsr311-api-1.1.1.jar;C:\Utilisateurs\a556724\.m2\repository\com\netflix\servo\servo-core\0.12.21\servo-core-0.12.21.jar;C:\Utilisateurs\a556724\.m2\repository\com\google\guava\guava\19.0\guava-19.0.jar;C:\Utilisateurs\a556724\.m2\repository\commons-configuration\commons-configuration\1.10\commons-configuration-1.10.jar;C:\Utilisateurs\a556724\.m2\repository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;C:\Utilisateurs\a556724\.m2\repository\com\google\inject\guice\4.1.0\guice-4.1.0.jar;C:\Utilisateurs\a556724\.m2\repository\javax\inject\javax.inject\1\javax.inject-1.jar;C:\Utilisateurs\a556724\.m2\repository\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;C:\Utilisateurs\a556724\.m2\repository\org\codehaus\jettison\jettison\1.4.0\jettison-1.4.0.jar;C:\Utilisateurs\a556724\.m2\repository\com\netflix\eureka\eureka-core\1.10.14\eureka-core-1.10.14.jar;C:\Utilisateurs\a556724\.m2\repository\com\fasterxml\woodstox\woodstox-core\6.2.1\woodstox-core-6.2.1.jar;C:\Utilisateurs\a556724\.m2\repository\org\codehaus\woodstox\stax2-api\4.2.1\stax2-api-4.2.1.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\cloud\spring-cloud-starter-loadbalancer\3.0.3\spring-cloud-starter-loadbalancer-3.0.3.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\cloud\spring-cloud-loadbalancer\3.0.3\spring-cloud-loadbalancer-3.0.3.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\boot\spring-boot-starter-validation\2.4.6\spring-boot-starter-validation-2.4.6.jar;C:\Utilisateurs\a556724\.m2\repository\org\hibernate\validator\hibernate-validator\6.1.7.Final\hibernate-validator-6.1.7.Final.jar;C:\Utilisateurs\a556724\.m2\repository\jakarta\validation\jakarta.validation-api\2.0.2\jakarta.validation-api-2.0.2.jar;C:\Utilisateurs\a556724\.m2\repository\org\jboss\logging\jboss-logging\3.4.1.Final\jboss-logging-3.4.1.Final.jar;C:\Utilisateurs\a556724\.m2\repository\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;C:\Utilisateurs\a556724\.m2\repository\io\projectreactor\reactor-core\3.4.6\reactor-core-3.4.6.jar;C:\Utilisateurs\a556724\.m2\repository\org\reactivestreams\reactive-streams\1.0.3\reactive-streams-1.0.3.jar;C:\Utilisateurs\a556724\.m2\repository\io\projectreactor\addons\reactor-extra\3.4.3\reactor-extra-3.4.3.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\boot\spring-boot-starter-cache\2.4.6\spring-boot-starter-cache-2.4.6.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\spring-context-support\5.3.7\spring-context-support-5.3.7.jar;C:\Utilisateurs\a556724\.m2\repository\com\stoyanr\evictor\1.0.0\evictor-1.0.0.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\boot\spring-boot-devtools\2.4.6\spring-boot-devtools-2.4.6.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\boot\spring-boot\2.4.6\spring-boot-2.4.6.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.4.6\spring-boot-autoconfigure-2.4.6.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\2.4.6\spring-boot-starter-tomcat-2.4.6.jar;C:\Utilisateurs\a556724\.m2\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;C:\Utilisateurs\a556724\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.46\tomcat-embed-core-9.0.46.jar;C:\Utilisateurs\a556724\.m2\repository\org\glassfish\jakarta.el\3.0.3\jakarta.el-3.0.3.jar;C:\Utilisateurs\a556724\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.46\tomcat-embed-websocket-9.0.46.jar;C:\Utilisateurs\a556724\.m2\repository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\spring-core\5.3.7\spring-core-5.3.7.jar;C:\Utilisateurs\a556724\.m2\repository\org\springframework\spring-jcl\5.3.7\spring-jcl-5.3.7.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\lib\idea_rt.jar" com.example.sd24.Sd24Application
Connected to the target VM, address: '127.0.0.1:57957', transport: 'socket'
09:53:26.331 [restartedMain] ERROR org.springframework.boot.SpringApplication - Application run failed
org.springframework.cloud.config.client.ConfigClientFailFastException: Could not locate PropertySource and the resource is not optional, failing
    at org.springframework.cloud.config.client.ConfigServerConfigDataLoader.doLoad(ConfigServerConfigDataLoader.java:193)
    at org.springframework.cloud.config.client.ConfigServerConfigDataLoader.load(ConfigServerConfigDataLoader.java:101)
    at org.springframework.cloud.config.client.ConfigServerConfigDataLoader.load(ConfigServerConfigDataLoader.java:60)
    at org.springframework.boot.context.config.ConfigDataLoaders.load(ConfigDataLoaders.java:103)
    at org.springframework.boot.context.config.ConfigDataImporter.load(ConfigDataImporter.java:128)
    at org.springframework.boot.context.config.ConfigDataImporter.resolveAndLoad(ConfigDataImporter.java:86)
    at org.springframework.boot.context.config.ConfigDataEnvironmentContributors.withProcessedImports(ConfigDataEnvironmentContributors.java:121)
    at org.springframework.boot.context.config.ConfigDataEnvironment.processWithProfiles(ConfigDataEnvironment.java:314)
    at org.springframework.boot.context.config.ConfigDataEnvironment.processAndApply(ConfigDataEnvironment.java:235)
    at org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessor.postProcessEnvironment(ConfigDataEnvironmentPostProcessor.java:102)
    at org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessor.postProcessEnvironment(ConfigDataEnvironmentPostProcessor.java:94)
    at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEnvironmentPreparedEvent(EnvironmentPostProcessorApplicationListener.java:100)
    at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEvent(EnvironmentPostProcessorApplicationListener.java:86)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131)
    at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:82)
    at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:63)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117)
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:111)
    at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:62)
    at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:375)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:333)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1318)
    at com.example.sd24.Sd24Application.main(Sd24Application.java:10)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://localhost:8888/application/default/dev": Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:785)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:711)
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:602)
    at org.springframework.cloud.config.client.ConfigServerConfigDataLoader.getRemoteEnvironment(ConfigServerConfigDataLoader.java:299)
    at org.springframework.cloud.config.client.ConfigServerConfigDataLoader.doLoad(ConfigServerConfigDataLoader.java:117)
    ... 32 common frames omitted
Caused by: java.net.ConnectException: Connection refused: connect
    at java.base/java.net.PlainSocketImpl.waitForConnect(Native Method)
    at java.base/java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:107)
    at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
    at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
    at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
    at java.base/java.net.Socket.connect(Socket.java:591)
    at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:177)
    at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:474)
    at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:569)
    at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
    at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:341)
    at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:362)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1242)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1181)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1075)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1009)
    at org.springframework.http.client.SimpleBufferingClientHttpRequest.executeInternal(SimpleBufferingClientHttpRequest.java:76)
    at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48)
    at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:66)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:776)
    ... 36 common frames omitted
Disconnected from the target VM, address: '127.0.0.1:57957', transport: 'socket'

Process finished with exit code 0

Am I making a mistake ? Thanks, Etienne.

Comment From: ryanjbaxter

Can you set spring.config.import=optional:configserver: and try again?

Comment From: edethoor

Hello @ryanjbaxter ,

Il y set spring.config.import=optional:configserver:, the application try to use the serviceDiscovery to retrieve information about configServer instances. But if there is none instances of configServer registered, the application try to reach a configServer at it's default address and accept to start due to the used of 'optional:'.

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.4.6)

2021-06-02 11:25:18.880  INFO 8492 --- [  restartedMain] com.example.sd24.Sd24Application         : Starting Sd24Application using Java 11.0.1 on EFR00491 with PID 8492 (C:\Repository\ede\SD24\SB246\target\classes started by A556724 in C:\Repository\ede\SD24\SB246)
2021-06-02 11:25:18.885  INFO 8492 --- [  restartedMain] com.example.sd24.Sd24Application         : No active profile set, falling back to default profiles: default
2021-06-02 11:25:18.964  WARN 8492 --- [  restartedMain] o.s.b.c.c.ConfigDataLocationResolver     : Could not locate configserver via discovery

java.lang.IllegalStateException: No instances found of configserver (toto)
    at org.springframework.cloud.config.client.ConfigServerInstanceProvider.getConfigServerInstances(ConfigServerInstanceProvider.java:59) ~[spring-cloud-config-client-3.0.4.jar:3.0.4]
    at org.springframework.cloud.config.client.ConfigServerInstanceMonitor.refresh(ConfigServerInstanceMonitor.java:90) ~[spring-cloud-config-client-3.0.4.jar:3.0.4]
    at org.springframework.cloud.config.client.ConfigServerConfigDataLocationResolver.lambda$resolveProfileSpecific$8(ConfigServerConfigDataLocationResolver.java:218) ~[spring-cloud-config-client-3.0.4.jar:3.0.4]
    at org.springframework.boot.DefaultBootstrapContext.getInstance(DefaultBootstrapContext.java:119) ~[spring-boot-2.4.6.jar:2.4.6]
    at org.springframework.boot.DefaultBootstrapContext.getOrElseThrow(DefaultBootstrapContext.java:111) ~[spring-boot-2.4.6.jar:2.4.6]
    at org.springframework.boot.DefaultBootstrapContext.get(DefaultBootstrapContext.java:88) ~[spring-boot-2.4.6.jar:2.4.6]
    at org.springframework.cloud.config.client.ConfigServerConfigDataLoader.load(ConfigServerConfigDataLoader.java:84) ~[spring-cloud-config-client-3.0.4.jar:3.0.4]
    at org.springframework.cloud.config.client.ConfigServerConfigDataLoader.load(ConfigServerConfigDataLoader.java:60) ~[spring-cloud-config-client-3.0.4.jar:3.0.4]
    at org.springframework.boot.context.config.ConfigDataLoaders.load(ConfigDataLoaders.java:103) ~[spring-boot-2.4.6.jar:2.4.6]
    at org.springframework.boot.context.config.ConfigDataImporter.load(ConfigDataImporter.java:128) ~[spring-boot-2.4.6.jar:2.4.6]
    at org.springframework.boot.context.config.ConfigDataImporter.resolveAndLoad(ConfigDataImporter.java:86) ~[spring-boot-2.4.6.jar:2.4.6]
    at org.springframework.boot.context.config.ConfigDataEnvironmentContributors.withProcessedImports(ConfigDataEnvironmentContributors.java:121) ~[spring-boot-2.4.6.jar:2.4.6]
    at org.springframework.boot.context.config.ConfigDataEnvironment.processWithProfiles(ConfigDataEnvironment.java:314) ~[spring-boot-2.4.6.jar:2.4.6]
    at org.springframework.boot.context.config.ConfigDataEnvironment.processAndApply(ConfigDataEnvironment.java:235) ~[spring-boot-2.4.6.jar:2.4.6]
    at org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessor.postProcessEnvironment(ConfigDataEnvironmentPostProcessor.java:102) ~[spring-boot-2.4.6.jar:2.4.6]
    at org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessor.postProcessEnvironment(ConfigDataEnvironmentPostProcessor.java:94) ~[spring-boot-2.4.6.jar:2.4.6]
    at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEnvironmentPreparedEvent(EnvironmentPostProcessorApplicationListener.java:100) ~[spring-boot-2.4.6.jar:2.4.6]
    at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEvent(EnvironmentPostProcessorApplicationListener.java:86) ~[spring-boot-2.4.6.jar:2.4.6]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.7.jar:5.3.7]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.7.jar:5.3.7]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.7.jar:5.3.7]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131) ~[spring-context-5.3.7.jar:5.3.7]
    at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:82) ~[spring-boot-2.4.6.jar:2.4.6]
    at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:63) ~[spring-boot-2.4.6.jar:2.4.6]
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1540) ~[na:na]
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117) ~[spring-boot-2.4.6.jar:2.4.6]
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:111) ~[spring-boot-2.4.6.jar:2.4.6]
    at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:62) ~[spring-boot-2.4.6.jar:2.4.6]
    at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:375) ~[spring-boot-2.4.6.jar:2.4.6]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:333) ~[spring-boot-2.4.6.jar:2.4.6]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) ~[spring-boot-2.4.6.jar:2.4.6]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1318) ~[spring-boot-2.4.6.jar:2.4.6]
    at com.example.sd24.Sd24Application.main(Sd24Application.java:10) ~[classes/:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.4.6.jar:2.4.6]

2021-06-02 11:25:18.965  INFO 8492 --- [  restartedMain] o.s.b.context.config.ConfigDataLoader    : Fetching config from server at : http://localhost:8888
2021-06-02 11:25:18.965  INFO 8492 --- [  restartedMain] o.s.b.context.config.ConfigDataLoader    : Connect Timeout Exception on Url - http://localhost:8888. Will be trying the next url if available
2021-06-02 11:25:18.965  WARN 8492 --- [  restartedMain] o.s.b.context.config.ConfigDataLoader    : Could not locate PropertySource ([ConfigServerConfigDataResource@2746446e uris = array<String>['http://localhost:8888'], optional = true, profiles = list['default']]): I/O error on GET request for "http://localhost:8888/application/default/dev": Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect
2021-06-02 11:25:18.967  INFO 8492 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2021-06-02 11:25:18.967  INFO 8492 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2021-06-02 11:25:20.861  INFO 8492 --- [  restartedMain] o.s.cloud.context.scope.GenericScope     : BeanFactory id=3f0f7669-ed8a-3616-99cb-694fbe5627c0
2021-06-02 11:25:21.670  INFO 8492 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8585 (http)
2021-06-02 11:25:21.716  INFO 8492 --- [  restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2021-06-02 11:25:21.717  INFO 8492 --- [  restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.46]
2021-06-02 11:25:21.982  INFO 8492 --- [  restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-06-02 11:25:21.983  INFO 8492 --- [  restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3015 ms
2021-06-02 11:25:22.758  INFO 8492 --- [  restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
2021-06-02 11:25:23.450  INFO 8492 --- [  restartedMain] DiscoveryClientOptionalArgsConfiguration : Eureka HTTP Client uses RestTemplate.
2021-06-02 11:25:24.026  WARN 8492 --- [  restartedMain] iguration$LoadBalancerCaffeineWarnLogger : Spring Cloud LoadBalancer is currently working with the default cache. You can switch to using Caffeine cache, by adding it and org.springframework.cache.caffeine.CaffeineCacheManager to the classpath.
2021-06-02 11:25:24.114  INFO 8492 --- [  restartedMain] o.s.c.n.eureka.InstanceInfoFactory       : Setting initial instance status as: STARTING
2021-06-02 11:25:24.167  INFO 8492 --- [  restartedMain] com.netflix.discovery.DiscoveryClient    : Initializing Eureka in region us-east-1
2021-06-02 11:25:24.174  INFO 8492 --- [  restartedMain] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2021-06-02 11:25:24.207  INFO 8492 --- [  restartedMain] com.netflix.discovery.DiscoveryClient    : Disable delta property : false
2021-06-02 11:25:24.208  INFO 8492 --- [  restartedMain] com.netflix.discovery.DiscoveryClient    : Single vip registry refresh property : null
2021-06-02 11:25:24.208  INFO 8492 --- [  restartedMain] com.netflix.discovery.DiscoveryClient    : Force full registry fetch : false
2021-06-02 11:25:24.208  INFO 8492 --- [  restartedMain] com.netflix.discovery.DiscoveryClient    : Application is null : false
2021-06-02 11:25:24.208  INFO 8492 --- [  restartedMain] com.netflix.discovery.DiscoveryClient    : Registered Applications size is zero : true
2021-06-02 11:25:24.208  INFO 8492 --- [  restartedMain] com.netflix.discovery.DiscoveryClient    : Application version is -1: true
2021-06-02 11:25:24.208  INFO 8492 --- [  restartedMain] com.netflix.discovery.DiscoveryClient    : Getting all instance registry info from the eureka server
2021-06-02 11:25:24.327  INFO 8492 --- [  restartedMain] com.netflix.discovery.DiscoveryClient    : The response status is 200
2021-06-02 11:25:24.333  INFO 8492 --- [  restartedMain] com.netflix.discovery.DiscoveryClient    : Starting heartbeat executor: renew interval is: 30
2021-06-02 11:25:24.338  INFO 8492 --- [  restartedMain] c.n.discovery.InstanceInfoReplicator     : InstanceInfoReplicator onDemand update allowed rate per min is 4
2021-06-02 11:25:24.347  INFO 8492 --- [  restartedMain] com.netflix.discovery.DiscoveryClient    : Discovery Client initialized at timestamp 1622625924346 with initial instances count: 13
2021-06-02 11:25:24.350  INFO 8492 --- [  restartedMain] o.s.c.n.e.s.EurekaServiceRegistry        : Registering application UNKNOWN with eureka with status UP
2021-06-02 11:25:24.352  INFO 8492 --- [  restartedMain] com.netflix.discovery.DiscoveryClient    : Saw local status change event StatusChangeEvent [timestamp=1622625924352, current=UP, previous=STARTING]
2021-06-02 11:25:24.356  INFO 8492 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_UNKNOWN/EFR00491.fr01.awl.atosorigin.net:8585: registering service...
2021-06-02 11:25:24.412  INFO 8492 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8585 (http) with context path ''
2021-06-02 11:25:24.414  INFO 8492 --- [  restartedMain] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8585
2021-06-02 11:25:25.311  INFO 8492 --- [  restartedMain] com.example.sd24.Sd24Application         : Started Sd24Application in 11.312 seconds (JVM running for 14.523)

I don't think it's a good solution. What do you thinnk ?

Comment From: ryanjbaxter

If you set spring.cloud.config.fail-fast=true I think you will get the behavior you desire.

Comment From: edethoor

You are right. With this properties we have the desired behaviour.

Maybe it should be a good point to add some information in the documentation about the usage of serviceDiscovery and the fact that we must use the optional: notion in the import directive.

Thank's for you're help @ryanjbaxter.

Comment From: ryanjbaxter

That is already called out https://docs.spring.io/spring-cloud-config/docs/current/reference/html/#discovery-first-bootstrap

Comment From: edethoor

I have already read this documentation but it's not explicit that the optional part of the import directive is mandatory.

Comment From: ryanjbaxter

I added some wording saying that you need optional