text:
Spring Cloud Config server doesn't start with OpenJDK 11-ea+24

My Spring Cloud Config server with OpenJDK 10 works fine. However, when I switch to OpenJDK 11, then I get the following console output. I'm using the Finchely release train.
> gradle clean bootRun
Starting a Gradle Daemon, 4 stopped Daemons could not be reused, use --status for details
w: -Xcoroutines has no effect: coroutines are enabled anyway in 1.3 and beyond

> Task :bootRun
2018-07-27 16:34:06.479  INFO 9632 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'configurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$769abc5e] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2018-07-27 16:34:07.672  INFO 9632 --- [           main] o.s.s.core.SpringSecurityCoreVersion     : You are running with Spring Security Core 5.1.0.M2
   ______            _____
  / ____/___  ____  / __(_)___ _
 / /   / __ \/ __ \/ /_/ / __ `/
 \____/\____/_/ /_/_/ /_/\__, /
                        /____/

2018-07-27 16:34:07.734  INFO 9632 --- [           main] de.hska.config.ApplicationKt             : The following profiles are active: dev
2018-07-27 16:34:09.951  INFO 9632 --- [           main] o.s.cloud.context.scope.GenericScope     : BeanFactory id=4d4d7110-90ab-30e3-8855-70aebb462fb7
2018-07-27 16:34:10.017  INFO 9632 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$769abc5e] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2018-07-27 16:34:10.682  INFO 9632 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8888 (https
2018-07-27 16:34:10.737  INFO 9632 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2018-07-27 16:34:10.737  INFO 9632 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/9.0.102018-07-27 16:34:10.754  INFO 9632 --- [           main] o.a.catalina.core.AprLifecycleListener   : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\Zimmermann\jdk\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Zimmermann\jdk\bin;C:\Zimmermann\gradle\bin;C:\Zimmermann\MongoDB\bin;C:\Zimmermann\npm-config;C:\Zimmermann\node;C:\Zimmermann\Python;C:\Zimmermann\kafka\bin\windows;C:\Zimmermann\git\cmd;C:\Zimmermann\git\bin;C:\Software\rabbitmq\sbin;C:\Zimmermann\Graphviz\bin;C:\Zimmermann\allure\bin;C:\Software\maven\bin;C:\Zimmermann\ant\bin;C:\Software\pgsql\bin;C:\Software\pgsql\lib;C:\Software\mariadb\bin;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon;C:\Software\QuickTime\QTSystem;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Software\MiKTeX\miktex\bin\;C:\Users\ziju0001\AppData\Local\Code\bin;C:\Users\ziju0001\AppData\Local\Microsoft\WindowsApps;.]
2018-07-27 16:34:11.063  INFO 9632 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2018-07-27 16:34:11.064  INFO 9632 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 3269 ms
2018-07-27 16:34:11.723 ERROR 9632 --- [           main] o.s.b.web.embedded.tomcat.TomcatStarter  : Error starting Tomcat context. Exception: org.springframework.beans.factory.BeanCreationException. Message: Error creating bean with name 'servletEndpointRegistrar' defined in class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/ServletEndpointManagementContextConfiguration$WebMvcServletEndpointManagementContextConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.endpoint.web.ServletEndpointRegistrar]: Factory method 'servletEndpointRegistrar' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'healthEndpoint' defined in class path resource [org/springframework/boot/actuate/autoconfigure/health/HealthEndpointConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.health.HealthEndpoint]: Factory method 'healthEndpoint' threw exception; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'configServerHealthIndicator' defined in class path resource [org/springframework/cloud/config/server/config/EnvironmentRepositoryConfiguration.class]: Unsatisfied dependency expressed through method 'configServerHealthIndicator' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.cloud.config.server.config.CompositeConfiguration': Unsatisfied dependency expressed through method 'setEnvironmentRepos' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'defaultEnvironmentRepository' defined in class path resource [org/springframework/cloud/config/server/config/DefaultRepositoryConfiguration.class]: Unsatisfied dependency expressed through method 'defaultEnvironmentRepository' parameter 1; nested exception is org.springframework.boot.context.properties.ConfigurationPropertiesBindException: Error creating bean with name 'multipleJGitEnvironmentProperties': Could not bind properties to 'MultipleJGitEnvironmentProperties' : prefix=spring.cloud.config.server.git, ignoreInvalidFields=false, ignoreUnknownFields=true; nested exception is org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'spring.cloud.config.server.git.uri' to java.lang.String
2018-07-27 16:34:11.780  INFO 9632 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.catalina.loader.WebappClassLoaderBase (file:/C:/Z/caches/modules-2/files-2.1/org.apache.tomcat.embed/tomcat-embed-core/9.0.10/fbf9dbc97babe8425332e6baf3925e8f726f3d7b/tomcat-embed-core-9.0.10.jar) to field java.io.ObjectStreamClass$Caches.localDescs
WARNING: Please consider reporting this to the maintainers of org.apache.catalina.loader.WebappClassLoaderBase
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2018-07-27 16:34:11.842  WARN 9632 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
2018-07-27 16:34:11.881  INFO 9632 --- [           main] ConditionEvaluationReportLoggingListener :

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2018-07-27 16:34:11.888 ERROR 9632 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   :

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under 'spring.cloud.config.server.git.uri' to java.lang.String:

    Property: spring.cloud.config.server.git.uri
    Value: file:///C:/Users/ziju0001/IdeaProjects/config/git
    Origin: class path resource [application.yml]:26:16
    Reason: Failed to bind properties under 'spring.cloud.config.server.git.uri' to java.lang.String

Action:

Update your application's configuration

Can you run with --debug to get the full exception

@spencergibb please see the attached file.
debug.txt

Just the exception would be nice

After "gradle bootJar" I invoked the JAR with --debug and get the following stacktrace:
org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'spring.cloud.config.server.git.uri' to java.lang.String
        at org.springframework.boot.context.properties.bind.Binder.handleBindError(Binder.java:250) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.bind.Binder.bind(Binder.java:226) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.bind.Binder.lambda$bindBean$4(Binder.java:333) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.bind.JavaBeanBinder.bind(JavaBeanBinder.java:73) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.bind.JavaBeanBinder.bind(JavaBeanBinder.java:62) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.bind.JavaBeanBinder.bind(JavaBeanBinder.java:54) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.bind.Binder.lambda$null$5(Binder.java:341) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[na:na]
        at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1631) ~[na:na]
        at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127) ~[na:na]
        at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502) ~[na:na]
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488) ~[na:na]
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[na:na]
        at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150) ~[na:na]
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
        at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:543) ~[na:na]
        at org.springframework.boot.context.properties.bind.Binder.lambda$bindBean$6(Binder.java:342) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.bind.Binder$Context.withIncreasedDepth(Binder.java:441) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.bind.Binder$Context.withBean(Binder.java:427) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.bind.Binder$Context.access$400(Binder.java:381) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.bind.Binder.bindBean(Binder.java:339) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.bind.Binder.bindObject(Binder.java:278) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.bind.Binder.bind(Binder.java:221) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.bind.Binder.bind(Binder.java:210) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.bind.Binder.bind(Binder.java:192) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.ConfigurationPropertiesBinder.bind(ConfigurationPropertiesBinder.java:82) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.bind(ConfigurationPropertiesBindingPostProcessor.java:107) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessBeforeInitialization(ConfigurationPropertiesBindingPostProcessor.java:93) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:419) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1735) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:576) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:290) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1205) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1132) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:824) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:727) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:478) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1282) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1126) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:290) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1402) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1368) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeans(DefaultListableBeanFactory.java:1269) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1163) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1132) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:664) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:91) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:370) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1376) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:575) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:376) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1282) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1126) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:290) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1205) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1132) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:824) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:727) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:478) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1282) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1126) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:578) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:566) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1206) ~[spring-context-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.boot.actuate.autoconfigure.health.HealthIndicatorBeansComposite.get(HealthIndicatorBeansComposite.java:46) ~[spring-boot-actuator-autoconfigure-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.actuate.autoconfigure.health.HealthEndpointConfiguration.healthEndpoint(HealthEndpointConfiguration.java:38) ~[spring-boot-actuator-autoconfigure-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.actuate.autoconfigure.health.HealthEndpointConfiguration$$EnhancerBySpringCGLIB$$9c0f02d6.CGLIB$healthEndpoint$0(<generated>) ~[spring-boot-actuator-autoconfigure-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.actuate.autoconfigure.health.HealthEndpointConfiguration$$EnhancerBySpringCGLIB$$9c0f02d6$$FastClassBySpringCGLIB$$53ce080f.invoke(<generated>) ~[spring-boot-actuator-autoconfigure-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:361) ~[spring-context-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.boot.actuate.autoconfigure.health.HealthEndpointConfiguration$$EnhancerBySpringCGLIB$$9c0f02d6.healthEndpoint(<generated>) ~[spring-boot-actuator-autoconfigure-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        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.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:586) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1282) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1126) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1085) ~[spring-context-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.boot.actuate.endpoint.annotation.EndpointDiscoverer.createEndpointBean(EndpointDiscoverer.java:143) ~[spring-boot-actuator-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.actuate.endpoint.annotation.EndpointDiscoverer.createEndpointBeans(EndpointDiscoverer.java:132) ~[spring-boot-actuator-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.actuate.endpoint.annotation.EndpointDiscoverer.discoverEndpoints(EndpointDiscoverer.java:122) ~[spring-boot-actuator-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.actuate.endpoint.annotation.EndpointDiscoverer.getEndpoints(EndpointDiscoverer.java:116) ~[spring-boot-actuator-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.actuate.autoconfigure.endpoint.web.ServletEndpointManagementContextConfiguration$WebMvcServletEndpointManagementContextConfiguration.servletEndpointRegistrar(ServletEndpointManagementContextConfiguration.java:78) ~[spring-boot-actuator-autoconfigure-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.actuate.autoconfigure.endpoint.web.ServletEndpointManagementContextConfiguration$WebMvcServletEndpointManagementContextConfiguration$$EnhancerBySpringCGLIB$$35a2a4ce.CGLIB$servletEndpointRegistrar$0(<generated>) ~[spring-boot-actuator-autoconfigure-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.actuate.autoconfigure.endpoint.web.ServletEndpointManagementContextConfiguration$WebMvcServletEndpointManagementContextConfiguration$$EnhancerBySpringCGLIB$$35a2a4ce$$FastClassBySpringCGLIB$$480c372b.invoke(<generated>) ~[spring-boot-actuator-autoconfigure-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:361) ~[spring-context-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.boot.actuate.autoconfigure.endpoint.web.ServletEndpointManagementContextConfiguration$WebMvcServletEndpointManagementContextConfiguration$$EnhancerBySpringCGLIB$$35a2a4ce.servletEndpointRegistrar(<generated>) ~[spring-boot-actuator-autoconfigure-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        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.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:586) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1282) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1126) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204) ~[spring-beans-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:226) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:214) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addServletContextInitializerBeans(ServletContextInitializerBeans.java:91) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.web.servlet.ServletContextInitializerBeans.<init>(ServletContextInitializerBeans.java:80) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getServletContextInitializerBeans(ServletWebServerApplicationContext.java:250) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.selfInitialize(ServletWebServerApplicationContext.java:237) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.web.embedded.tomcat.TomcatStarter.onStartup(TomcatStarter.java:54) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5098) ~[tomcat-embed-core-9.0.10.jar!/:9.0.10]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.10.jar!/:9.0.10]
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1427) ~[tomcat-embed-core-9.0.10.jar!/:9.0.10]
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1417) ~[tomcat-embed-core-9.0.10.jar!/:9.0.10]
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[tomcat-embed-core-9.0.10.jar!/:9.0.10]
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140) ~[na:na]
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:943) ~[tomcat-embed-core-9.0.10.jar!/:9.0.10]
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:839) ~[tomcat-embed-core-9.0.10.jar!/:9.0.10]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.10.jar!/:9.0.10]
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1427) ~[tomcat-embed-core-9.0.10.jar!/:9.0.10]
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1417) ~[tomcat-embed-core-9.0.10.jar!/:9.0.10]
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[tomcat-embed-core-9.0.10.jar!/:9.0.10]
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140) ~[na:na]
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:943) ~[tomcat-embed-core-9.0.10.jar!/:9.0.10]
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:258) ~[tomcat-embed-core-9.0.10.jar!/:9.0.10]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.10.jar!/:9.0.10]
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422) ~[tomcat-embed-core-9.0.10.jar!/:9.0.10]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.10.jar!/:9.0.10]
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:770) ~[tomcat-embed-core-9.0.10.jar!/:9.0.10]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.10.jar!/:9.0.10]
        at org.apache.catalina.startup.Tomcat.start(Tomcat.java:371) ~[tomcat-embed-core-9.0.10.jar!/:9.0.10]
        at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:107) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.<init>(TomcatWebServer.java:86) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:413) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:174) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:179) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:152) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) ~[spring-context-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:395) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:327) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at de.hska.config.ApplicationKt.main(Application.kt:48) ~[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.loader.MainMethodRunner.run(MainMethodRunner.java:48) ~[config-1.0.jar:na]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) ~[config-1.0.jar:na]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) ~[config-1.0.jar:na]
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51) ~[config-1.0.jar:na]
Caused by: java.lang.UnsupportedOperationException: null
        at org.springframework.asm.ClassVisitor.visitNestMemberExperimental(ClassVisitor.java:244) ~[spring-core-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.asm.ClassReader.accept(ClassReader.java:651) ~[spring-core-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.asm.ClassReader.accept(ClassReader.java:391) ~[spring-core-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.core.LocalVariableTableParameterNameDiscoverer.inspectClass(LocalVariableTableParameterNameDiscoverer.java:116) ~[spring-core-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.core.LocalVariableTableParameterNameDiscoverer.getParameterNames(LocalVariableTableParameterNameDiscoverer.java:74) ~[spring-core-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.core.PrioritizedParameterNameDiscoverer.getParameterNames(PrioritizedParameterNameDiscoverer.java:55) ~[spring-core-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.validation.beanvalidation.LocalValidatorFactoryBean$1.getParameterNames(LocalValidatorFactoryBean.java:324) ~[spring-context-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.hibernate.validator.internal.util.ExecutableParameterNameProvider.getParameterNames(ExecutableParameterNameProvider.java:37) ~[hibernate-validator-6.0.10.Final.jar!/:6.0.10.Final]
        at org.hibernate.validator.internal.metadata.aggregated.ParameterMetaData$Builder.build(ParameterMetaData.java:169) ~[hibernate-validator-6.0.10.Final.jar!/:6.0.10.Final]
        at org.hibernate.validator.internal.metadata.aggregated.ExecutableMetaData$Builder.findParameterMetaData(ExecutableMetaData.java:435) ~[hibernate-validator-6.0.10.Final.jar!/:6.0.10.Final]
        at org.hibernate.validator.internal.metadata.aggregated.ExecutableMetaData$Builder.build(ExecutableMetaData.java:388) ~[hibernate-validator-6.0.10.Final.jar!/:6.0.10.Final]
        at org.hibernate.validator.internal.metadata.aggregated.BeanMetaDataImpl$BuilderDelegate.build(BeanMetaDataImpl.java:788) ~[hibernate-validator-6.0.10.Final.jar!/:6.0.10.Final]
        at org.hibernate.validator.internal.metadata.aggregated.BeanMetaDataImpl$BeanMetaDataBuilder.build(BeanMetaDataImpl.java:648) ~[hibernate-validator-6.0.10.Final.jar!/:6.0.10.Final]
        at org.hibernate.validator.internal.metadata.BeanMetaDataManager.createBeanMetaData(BeanMetaDataManager.java:192) ~[hibernate-validator-6.0.10.Final.jar!/:6.0.10.Final]
        at org.hibernate.validator.internal.metadata.BeanMetaDataManager.lambda$getBeanMetaData$0(BeanMetaDataManager.java:160) ~[hibernate-validator-6.0.10.Final.jar!/:6.0.10.Final]
        at java.base/java.util.concurrent.ConcurrentMap.computeIfAbsent(ConcurrentMap.java:330) ~[na:na]
        at org.hibernate.validator.internal.metadata.BeanMetaDataManager.getBeanMetaData(BeanMetaDataManager.java:159) ~[hibernate-validator-6.0.10.Final.jar!/:6.0.10.Final]
        at org.hibernate.validator.internal.engine.ValidationContext$ValidationContextBuilder.forValidate(ValidationContext.java:566) ~[hibernate-validator-6.0.10.Final.jar!/:6.0.10.Final]
        at org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:155) ~[hibernate-validator-6.0.10.Final.jar!/:6.0.10.Final]
        at org.springframework.validation.beanvalidation.SpringValidatorAdapter.validate(SpringValidatorAdapter.java:108) ~[spring-context-5.1.0.RC1.jar!/:5.1.0.RC1]
        at org.springframework.boot.context.properties.ConfigurationPropertiesJsr303Validator.validate(ConfigurationPropertiesJsr303Validator.java:52) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.bind.validation.ValidationBindHandler.lambda$validate$1(ValidationBindHandler.java:101) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) ~[na:na]
        at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177) ~[na:na]
        at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) ~[na:na]
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[na:na]
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[na:na]
        at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) ~[na:na]
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) ~[na:na]
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
        at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497) ~[na:na]
        at org.springframework.boot.context.properties.bind.validation.ValidationBindHandler.validate(ValidationBindHandler.java:101) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.bind.validation.ValidationBindHandler.validate(ValidationBindHandler.java:83) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.bind.validation.ValidationBindHandler.onFinish(ValidationBindHandler.java:72) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.bind.Binder.handleBindResult(Binder.java:236) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.context.properties.bind.Binder.bind(Binder.java:223) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        ... 186 common frames omitted

2018-07-27 17:56:48.252 ERROR 9444 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   :

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under 'spring.cloud.config.server.git.uri' to java.lang.String:

    Property: spring.cloud.config.server.git.uri
    Value: file:///C:/Users/ziju0001/IdeaProjects/config/git
    Origin: class path resource [application.yml]:26:16
    Reason: Failed to bind properties under 'spring.cloud.config.server.git.uri' to java.lang.String

Action:

...
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2018-07-27 17:52:39.471 ERROR 7828 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   :

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under 'spring.cloud.config.server.git.uri' to java.lang.String:

    Property: spring.cloud.config.server.git.uri
    Value: file:///C:/Users/ziju0001/IdeaProjects/config/git
    Origin: class path resource [application.yml]:26:16
    Reason: Failed to bind properties under 'spring.cloud.config.server.git.uri' to java.lang.String

Action:

Update your application's configuration

> Task :bootRun FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':bootRun'.
> Process 'command 'C:\Zimmermann\jdk\bin\java.exe'' finished with non-zero exit value 1

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':bootRun'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:110)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipCachedTaskExecuter.execute(SkipCachedTaskExecuter.java:105)
        at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
        at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ResolveBuildCacheKeyExecuter.execute(ResolveBuildCacheKeyExecuter.java:66)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
        at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
        at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.run(EventFiringTaskExecuter.java:51)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:46)
        at org.gradle.execution.taskgraph.LocalTaskInfoExecutor.execute(LocalTaskInfoExecutor.java:42)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:273)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:258)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:135)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:130)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.execute(DefaultTaskPlanExecutor.java:200)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.executeWithWork(DefaultTaskPlanExecutor.java:191)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.run(DefaultTaskPlanExecutor.java:130)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:74)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.execute(DefaultTaskExecutionGraph.java:139)
        at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:39)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:40)
        at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:24)
        at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:46)
        at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:49)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:40)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:33)
        at org.gradle.initialization.DefaultGradleLauncher$ExecuteTasks.run(DefaultGradleLauncher.java:347)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.initialization.DefaultGradleLauncher.runTasks(DefaultGradleLauncher.java:216)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:146)
        at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:121)
        at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:77)
        at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:74)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:152)
        at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:38)
        at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:96)
        at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:74)
        at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
        at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.run(RunAsBuildOperationBuildActionRunner.java:47)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:43)
        at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:50)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:46)
        at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:74)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:46)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:32)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:80)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:53)
        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:62)
        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:34)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:59)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:46)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)
        at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
        at org.gradle.util.Swapper.swap(Swapper.java:38)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
        at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: org.gradle.process.internal.ExecException: Process 'command 'C:\Zimmermann\jdk\bin\java.exe'' finished with non-zero exit value 1
        at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:395)
        at org.gradle.process.internal.DefaultJavaExecAction.execute(DefaultJavaExecAction.java:37)
        at org.gradle.api.tasks.JavaExec.exec(JavaExec.java:79)
        at org.springframework.boot.gradle.tasks.run.BootRun.exec(BootRun.java:51)
        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 org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:46)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:786)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:753)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:131)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:120)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99)
        ... 113 more

Same stacktrace with Spring Cloud Gateway. I'll prepare a testcase for Spring Core 5.1 RC1 / JDK 11.

Doesn't look like it's a problem with spring cloud at all

https://jira.spring.io/browse/SPR-17103

authors: juergenzimmermann spencergibb

repo: spring-cloud/spring-cloud-config


text:
spring.cloud.config.server.native.search-locations win10,config client get config from config server failed

Describe the bug
spring cloud Greenwich.SR5,spring boot 2.1.12, in windows 10 ,some time config client get cofig form config server none。
**OK Sample **
project directory
D:.
└─workspace
|--└─demo
|--|--└─config-file/
|--|--└─demo-config-server
|--|--└─demo-config-client

before compile mave project,bootstrap.properties file content like
spring.application.name=server-config
spring.application.profiles.active=native,local
spring.cloud.config.server.native.search-locations='file:/${pom.basedir}/../config-file/'
spring.cloud.config.server.bootstrap=true

after compile mave project,target directory bootstrap.properties file content like
spring.application.name=server-config
spring.application.profiles.active=native,local
spring.cloud.config.server.native.search-locations='file:/D:\\workspace\\deme\\demo-config-server/../config-file/'
spring.cloud.config.server.bootstrap=true

**Wrong Sample **
project directory
D:.
└─workspace
|--└─demo
|--|--└─config-file/
|--|--└─base-component
|--|--|--└─demo-config-server
|--|--|--└─demo-config-client

before compile mave project,bootstrap.properties file content like
spring.application.name=server-config
spring.application.profiles.active=native,local
spring.cloud.config.server.native.search-locations='file:/${pom.basedir}/../../config-file/'
spring.cloud.config.server.bootstrap=true

after compile mave project,target directory bootstrap.properties file content like
spring.application.name=server-config
spring.application.profiles.active=native,local
spring.cloud.config.server.native.search-locations='file:/D:\\workspace\\deme\\demo-config-server/../../config-file/'
spring.cloud.config.server.bootstrap=true

I don't know why? but when I moidfy file
org.springframework.cloud.config.server.environment.NativeEnvironmentProperties

code from

public void setSearchLocations(String[] searchLocations) {
		this.searchLocations = searchLocations;
}

to

public void setSearchLocations(String[] searchLocations) {
		String[] tempLocations;
		if (!ArrayUtils.isEmpty(searchLocations)) {
			tempLocations = new String[searchLocations.length];
			for (int i =0;i < searchLocations.length;i++)
			{
				String temp = searchLocations[i];
				tempLocations[i] = temp.replaceAll("\\\\\\\\","/");
			}
		}
		else
		{
			tempLocations = new String[0];
		}
		this.searchLocations = tempLocations;
	}

it will be ok.
I debug the code find
org.springframework.cloud.config.server.environment.NativeEnvironmentRepository

protected Environment clean(Environment value) {
		Environment result = new Environment(value.getName(), value.getProfiles(),
				value.getLabel(), this.version, value.getState());
		for (PropertySource source : value.getPropertySources()) {
			String name = source.getName();
			if (this.environment.getPropertySources().contains(name)) {
				continue;
			}
			name = name.replace("applicationConfig: [", "");
			name = name.replace("]", "");
			if (this.searchLocations != null) {
				boolean matches = false;
				String normal = name;
				if (normal.startsWith("file:")) {
					normal = StringUtils
							.cleanPath(new File(normal.substring("file:".length()))
									.getAbsolutePath());
				}
				String profile = result.getProfiles() == null ? null
						: StringUtils.arrayToCommaDelimitedString(result.getProfiles());
				for (String pattern : getLocations(result.getName(), profile,
						result.getLabel()).getLocations()) {
					if (!pattern.contains(":")) {
						pattern = "file:" + pattern;
					}
					if (pattern.startsWith("file:")) {
						pattern = StringUtils
								.cleanPath(new File(pattern.substring("file:".length()))
										.getAbsolutePath())
								+ "/";
					}
					if (logger.isTraceEnabled()) {
						logger.trace("Testing pattern: " + pattern
								+ " with property source: " + name);
					}

**//in ok sample code will be enter following statement  var mathes will be true.**
**//in wrong sample code will be not enter following statement.**
					if (normal.startsWith(pattern)
							&& !normal.substring(pattern.length()).contains("/")) {
						matches = true;
						break;
					}
				}
				if (!matches) {
					// Don't include this one: it wasn't matched by our search locations
					if (logger.isDebugEnabled()) {
						logger.debug("Not adding property source: " + name);
					}
					continue;
				}
			}
			logger.info("Adding property source: " + name);
			result.add(new PropertySource(name, source.getSource()));
		}
		return result;
	}

I don't konw why,help,thank you!

Does using forward slash / help?

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.

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.

source: gharchive/issue

license_type: permissive

license_source: bigquery


text:
Push Notifications and Spring Cloud Bus

I have two questions:

Does Spring cloud config can work with AWS code commit push notifications? AWS Codecommit can work with SNS that can send web hook
Can the spring cloud config client run a task every x seconds that will call /acuator/refresh instead of using the spring cloud bus solution?

thanks,
Avner Sternheim

Does Spring cloud config can work with AWS code commit push notifications? AWS Codecommit can work with SNS that can send web hook

From the docs...

The default configuration works out of the box with Github, Gitlab, Gitea, Gitee, Gogs or Bitbucket. In addition to the JSON notifications from Github, Gitlab, Gitee, or Bitbucket, you can trigger a change notification by POSTing to /monitor with form-encoded body parameters in the pattern of path={application}. Doing so broadcasts to applications matching the {application} pattern (which can contain wildcards).

Out o the box no, but you might be able to use the /monitor endpoint.

Can the spring cloud config client run a task every x seconds that will call /acuator/refresh instead of using the spring cloud bus solution?

No not out of the box.

I tried what you suggested and it seems to be working. The one thing that doesn't seem to be working is the profile
I have a client spring boot app that is running in profile: stage
when I run a curl:
curl -v -X POST "http://localhost:8888/monitor"
-H "Content-Type: application/json"
-H "Authorization: Basic dXNlcjE6dXNlcjE="
-d '{"path":["springboot-no-ui-tests"]}
the application request for new configuration.
When I runt the curl:
curl -v -X POST "http://localhost:8888/monitor"
-H "Content-Type: application/json"
-H "Authorization: Basic dXNlcjE6dXNlcjE="
-d '{"path":["springboot-no-ui-tests-stage"]}'
it doesn't seem to ask.
I see those lines in the server side log:
2021-07-22 15:03:23.331  INFO [cloud-config-server,dbc177dbdbf18526,dbc177dbdbf18526]  [nio-8888-exec-2] o.s.cloud.bus.event.RefreshListener      : Refresh not performed, the event was targeting springboot:no-ui-tests-stage:**
2021-07-22 15:03:23.331  INFO [cloud-config-server,dbc177dbdbf18526,dbc177dbdbf18526]  [nio-8888-exec-2] o.s.c.c.monitor.PropertyPathEndpoint     : Refresh for: springboot-no:ui-tests-stage
2021-07-22 15:03:23.331  INFO [cloud-config-server,dbc177dbdbf18526,dbc177dbdbf18526]  [nio-8888-exec-2] o.s.cloud.bus.event.RefreshListener      : Received remote refresh request.
2021-07-22 15:03:23.331  INFO [cloud-config-server,dbc177dbdbf18526,dbc177dbdbf18526]  [nio-8888-exec-2] o.s.cloud.bus.event.RefreshListener      : Refresh not performed, the event was targeting springboot-no:ui-tests-stage:**
2021-07-22 15:03:23.331  INFO [cloud-config-server,dbc177dbdbf18526,dbc177dbdbf18526]  [nio-8888-exec-2] o.s.c.c.monitor.PropertyPathEndpoint     : Refresh for: springboot-no-ui:tests-stage
2021-07-22 15:03:23.332  INFO [cloud-config-server,dbc177dbdbf18526,dbc177dbdbf18526]  [nio-8888-exec-2] o.s.cloud.bus.event.RefreshListener      : Received remote refresh request.
2021-07-22 15:03:23.332  INFO [cloud-config-server,dbc177dbdbf18526,dbc177dbdbf18526]  [nio-8888-exec-2] o.s.cloud.bus.event.RefreshListener      : Refresh not performed, the event was targeting springboot-no-ui:tests-stage:**
2021-07-22 15:03:23.332  INFO [cloud-config-server,dbc177dbdbf18526,dbc177dbdbf18526]  [nio-8888-exec-2] o.s.c.c.monitor.PropertyPathEndpoint     : Refresh for: springboot-no-ui-tests:stage
2021-07-22 15:03:23.333  INFO [cloud-config-server,dbc177dbdbf18526,dbc177dbdbf18526]  [nio-8888-exec-2] o.s.cloud.bus.event.RefreshListener      : Received remote refresh request.
2021-07-22 15:03:23.333  INFO [cloud-config-server,dbc177dbdbf18526,dbc177dbdbf18526]  [nio-8888-exec-2] o.s.cloud.bus.event.RefreshListener      : Refresh not performed, the event was targeting springboot-no-ui-tests:stage:**
2021-07-22 15:03:23.333  INFO [cloud-config-server,dbc177dbdbf18526,dbc177dbdbf18526]  [nio-8888-exec-2] o.s.c.c.monitor.PropertyPathEndpoint     : Refresh for: springboot-no-ui-tests-stage
2021-07-22 15:03:23.334  INFO [cloud-config-server,dbc177dbdbf18526,dbc177dbdbf18526]  [nio-8888-exec-2] o.s.cloud.bus.event.RefreshListener      : Received remote refresh request.
2021-07-22 15:03:23.334  INFO [cloud-config-server,dbc177dbdbf18526,dbc177dbdbf18526]  [nio-8888-exec-2] o.s.cloud.bus.event.RefreshListener      : Refresh not performed, the event was targeting springboot-no-ui-tests-stage:**
but the client doesn't ask for updates.
any idea?

it seems that when I changed the bus.id in the client, it worked.
id: ${spring.application.name}:${spring.profiles.active}
I think this should be the default and not the only the application. WDYT?

The two post requests look identical to me.
Since the event was targeting springboot-no-ui-tests-stage:** I think it should work regardless of the enabled profile.
Is that correct @spencergibb?

The second one has -stage at the end of path. If you are putting profile in the path you need to add the profile to the bus.id I think.

Arg, I missed that despite looking at it for a few minutes 🤦♂
Seems like this test would cover this scenario...
https://github.com/spring-cloud/spring-cloud-bus/blob/ee1015c225a97e904aa60e6ad2e611535ce4b589/spring-cloud-bus/src/test/java/org/springframework/cloud/bus/PathServiceMatcherWithConfigNamesTests.java#L103
Can you provide us with the sample client application?

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.

@ryanjbaxter as I said - I found the solution
when I added the profile to the bus-id of the client:
id: ${spring.application.name}:${spring.profiles.active}
but I think this should be the default of the id and not only the application.
maybe here is not the forum, but the spring-bus.

I just noticed something strange...
Refresh not performed, the event was targeting springboot:no-ui-tests-stage:**
There is a : between springboot and no, that should be a dash.
Is springboot-no-ui-tests the name of the application?

right, springboot-no-ui-tests  is the name of the application
I think it ties all the options since it doesn't know when the application name ends and the profile starts
WDYT?

@ryanjbaxter
regarding my second question:
Can the spring cloud config client run a task every x seconds that will call /acuator/refresh instead of using the spring cloud bus solution?
Any idea how this can be done? I get some objections to use bus in my company for this solution and I want to do some automatic refresh.

is this code can do the job?
public class RefreshConfigurationTask {
private ApplicationEventPublisher eventPublisher;

public RefreshConfigurationTask(ApplicationEventPublisher eventPublisher) {
    this.eventPublisher = eventPublisher;
}

@Scheduled(fixedRate = 10000)
public void RefreshConfiguration(){
    eventPublisher.publishEvent(new RefreshEvent(this, "RefreshEvent", "Refreshing scope"));

}

}

I think it ties all the options since it doesn't know when the application name ends and the profile starts, so it tires all the options.
WDYT?

Right you should not use dashes in the application name because the dash is used to indicate a profile.

Can the spring cloud config client run a task every x seconds that will call /acuator/refresh instead of using the spring cloud bus solution?
No, not out of the box.

but it doesn't seem to work. Does it suppose to refresh client configuration and refresh the beans?
if not, what it is used for, in the client side. it's not clear

No it does not, its just used to indicate if the client can reach the config server.

regarding the task, I created the following:
@Slf4j
public class RefreshConfigurationTask {
private ApplicationEventPublisher eventPublisher;

public RefreshConfigurationTask(ApplicationEventPublisher eventPublisher) {
    this.eventPublisher = eventPublisher;
}

@Scheduled(fixedRate = 10000)
public void refreshConfiguration(){
    eventPublisher.publishEvent(new RefreshEvent(this, "RefreshEvent", "Refreshing scope"));

}

}
is there any risk in doing that? besides the affect on the refresh-scoped beans that I should be aware of?

I dont think so.
Another option is to do exactly what the refresh endpoint does
https://github.com/spring-cloud/spring-cloud-commons/blob/main/spring-cloud-context/src/main/java/org/springframework/cloud/endpoint/RefreshEndpoint.java
But i dont think what you are doing will cause an issue

thanks @ryanjbaxter I will try that.

authors: avnerstr ryanjbaxter spencergibb spring-cloud-issues


text:
Docker SCC Verifier image uploads artifacts twice

When trying to publish verifier stubs to Nexus releases via the Docker image, I stumbled across a problem, that stubs are uploaded twice. This was an issue, because the Nexus that I am using is set up in a way, that prevents updating anything in release repository. It caused a failure every time.
SCC version: 2.2.0-BUILD-SNAPSHOT from September 25th 2019, freshly built from master.
Reproducer: Try running provider verification using docker with PUBLISH_ARTIFACTS: "true" into a release repository, that does not allow updates.
Proposal (or possibly the solution) is available in #1223.

Fixed via https://github.com/spring-cloud/spring-cloud-contract/commit/f436d7fca9413cc7ecc3f6b41debe9e8b37c63cd

repo: spring-cloud/spring-cloud-contract

license_source: github-api


text:
ticktock stream deployment error

I've set up kafka, mysql, and scdf services & rc on a Kubernetes 1.2 cluster - I used NodePorts instead of LoadBalancer in the scdf service and with that I am about to open the dashboard on localhost. I am stuck at step 10 of the example (http://docs.spring.io/spring-cloud-dataflow-server-kubernetes/docs/1.0.0.RELEASE/reference/htmlsingle/). I am able to register docker:springcloudstream/time-source-kafka:latest as source & docker:springcloudstream/log-sink-kafka:latest sink but deployment of "stream create --name ticktock --definition "time | log" --deploy" is failing with the following exceptions:
2016-08-31T15:00:59.420555172Z Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 2016-08-31T15:00:59.420567646Z 	at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387) ~[na:1.8.0_92-internal] 2016-08-31T15:00:59.420574991Z 	at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292) ~[na:1.8.0_92-internal] 2016-08-31T15:00:59.420582081Z 	at sun.security.validator.Validator.validate(Validator.java:260) ~[na:1.8.0_92-internal] 2016-08-31T15:00:59.420588738Z 	at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324) ~[na:1.8.0_92-internal] 2016-08-31T15:00:59.420595581Z 	at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229) ~[na:1.8.0_92-internal] 2016-08-31T15:00:59.420602522Z 	at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124) ~[na:1.8.0_92-internal] 2016-08-31T15:00:59.420609339Z 	at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1491) ~[na:1.8.0_92-internal] 2016-08-31T15:00:59.420616163Z 	... 98 common frames omitted 2016-08-31T15:00:59.420622474Z Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Could you please suggest what could be going wrong?

Do you have the correct URI for KUBERNETES_MASTER in your scdf-controller.yml? You can check the current value with kubectl describe pod scdf. It should match the value returned by kubectl cluster-info, look for Kubernetes master is running at .

Yes, the scdf server can connect to the kubernetes master, the mysql test database is also populated when I register the time & log modules. The certification path error comes up when I try to deploy the ticktock stream.

Where do you see this exception? Can you post the complete stacktrace?

In the log of the scdf server replication controller. Here's a link to the complete stacktrace: https://gist.github.com/linusviking/44f2fe38961f3aa88b00c6785cb10b43

I don't recognize the logging pattern - 2016-09-01T10:13:23.166360314Z 2016-09-01 10:13:23.121  INFO - is this a custom build or the docker image from springcloud/spring-cloud-dataflow-server-kubernetes

Yes, I'd built a custom image. I get the same "certification path to requested target not found" with the docker image from springcloud/spring-cloud-dataflow-server-kubernetes. Here's the complete stacktrace: https://gist.github.com/linusviking/a03c274b91e16131423c6750fa911321
The file not found errors at line 191 & 277 were caused when I tried to create the ticktock stream without registering the apps. Errors from line 358 were caused after post registration of the time & log apps.

Is this on a Google Container Engine cluster or some other cluster. Maybe you are missing the necessary CA certificates for Java to use SSL?

I am deploying on a local K8 cluster. Is there a way to disable SSL on the Spring Cloud Dataflow server?

Clearing out old issues - did you ever get this resolved? If not please re-open this issue and post the entire stack trace so we can se where it is coming from.

authors: linusviking trisberg


text:
Spring gateway intercepts response length missing ServerHttpResponseDecorator

-----------------------------start code----------------------------------------------------
if (body instanceof Flux) {
Flux<? extends DataBuffer> fluxBody = (Flux<? extends DataBuffer>) body;
return super.writeWith(fluxBody.map(dataBuffer -> {
byte[] content = new byte[dataBuffer.readableByteCount()];
dataBuffer.read(content);
DataBufferUtils.release(dataBuffer);
String dataBody = new String(content, Charset.forName("UTF-8"));
log.info("----------return data-------------{}",dataBody);
----------------------------end code----------------------------------------------------------
Stress test, incomplete return data
INFO (ResponseGlobalFilter.java:161)- ----------return data-------------{"code":"200","msg":"处理成功"}
INFO (ResponseGlobalFilter.java:161)- ----------return data-------------{"code":"200","msg":"处理成功"}
INFO (ResponseGlobalFilter.java:161)- ----------return data-------------{"code":"200","msg":"处理成功"}
INFO (ResponseGlobalFilter.java:161)- ----------return data-------------{"code":"200","msg":"处理成功"}
INFO (ResponseGlobalFilter.java:161)- ----------return data-------------{"code":"200","msg":"处理�
INFO (ResponseGlobalFilter.java:161)- ----------return data-------------��功"}
INFO (ResponseGlobalFilter.java:161)- ----------return data-------------{"code":"200","msg":"处理成功"}
INFO (ResponseGlobalFilter.java:161)- ----------return data-------------{"code":"200","msg":"处理成功"}
INFO (ResponseGlobalFilter.java:161)- ----------return data-------------{"code":"200","msg":"处理成功"}

Incomplete data：
INFO (ResponseGlobalFilter.java:161)- ----------return data-------------{"code":"200","msg":"处理�
INFO (ResponseGlobalFilter.java:161)- ----------return data-------------��功"}
Normal data
INFO (ResponseGlobalFilter.java:161)- ----------return data-------------{"code":"200","msg":"处理成功"}
INFO (ResponseGlobalFilter.java:161)- ----------return data-------------{"code":"200","msg":"处理成功"}

Please learn how to format code on GitHub.
Please provide a clear description of what the problem is.
Can you provide a complete, minimal, verifiable sample that reproduces the problem? It should be available as a GitHub (or similar) project or attached to this issue as a zip file.

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.

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.

repo: spring-cloud/spring-cloud-gateway


text:
Handle 5xx Server Error

Spring cloud gateway is not handling server errors (5xx) but instead it's throwing exception which is then caught with Spring Boot DefaultErrorWebExceptionHandler where the original response body is lost.
The issues we have is that downstream micro-service is returning 500 with body which we need for error handling.
Version:
Spring Boot: 2.0.0.M7
Spring Cloud: Finchley.M5
sample application.yml which reproduces this issues (without body for simplicity)
spring:
  cloud:
    gateway:
      routes:
      - id: status-500-no-body
        uri: http://httpbin.org:80/status/500
        predicates:
        - Path=/status/500

Check response with:
curl localhost:8080/status/500
you will see that gateway returned following:
{
   "message" : "HTTP request failed with code: 500.\nFailing URI: /status/500",
   "timestamp" : "2018-01-30T10:46:02.253+0000",
   "path" : "/status/500",
   "error" : "Internal Server Error",
   "status" : 500
}

You're expecting the body to be empty?

We are having issues with HTTP 500 responses. We need body for error handling, but gateway is not not returning body from downstream, but message from DefaultErrorWebExceptionHandler.
The sample reproduces this issue, but without body just for simplicity.

I've observed similar behavior while using the gateway with @EnableDiscoveryClient.
It looks like reactor.ipc.netty.http.client.HttpClientOperations strips response in case of 500 error if failOnServerError is set to true.
As a workaround (similarly to #42), I've added a copy of NettyRoutingFilter (with lower order) which sets the failOnServerError is to true and registered it as a bean.
@spencergibb: is it feasible to have the failOnServerError configurable in NettyRoutingFilter?

@nkolosnjaji :+1:
@maciejlach I don't think that is the right approach. That will cause the local netty http client to throw an exception, which is not correct. We want the downstream error to flow back through the gateway.

@spencergibb I meant to set it to false, it looks like this set to true by default which results in the exception without details from the downstream. I've updated my comment. My apologies for the mistake.

@maciejlach good catch.

authors: maciejlach nkolosnjaji spencergibb


text:
Getting some 504 with benchmarking of gateway?

I was trying to benchmark the gateway performance using Jmeter(config: 10 users, 9min duration), but I noticed some of the request (7 to 11) was getting 504 response code.
I am using spring cloud config and actuator dependency in my gateway.
Can you please help me out why I am getting these 504?

Not without significantly more information from you such as what's versions you're using, what is the gateway configuration and how your test is setup.

spring cloud version : Hoxton.SR4
spring cloud gateway version : 2.2.3.RELEASE
spring cloud actuator version : 2.2.8.RELEASE
spring cloud config version : 2.2.3.RELEASE
gateway configuration :
server:
port: 8080
management:
server:
port: 8090
spring:
application:
name: spring-gateway
cloud:
gateway:
routes:
- id: abc
uri: http://localhost:8082/
predicates:
- Path= /first-service
metadata:
response-timeout: 1200
connect-timeout: 1000
Microservice: hello-world
Jmeter Config:
No of users(threads) : 10
Duration : 9 min
Test result:
Total no of request entertained : more than 10 lac
No of request getting 504 : 7 to 11
I more thing I forget to mention earlier that I was getting 504 because of the response time for those request was greater than the specified 1200 timeout.
But why I am getting this huge response time with hello microservice.

What version of spring boot are your running? Are you running these on the same machine?

spring boot version in gateway : 2.2.9.RELEASE
spring boot version in microservice :  2.3.0.RELEASE
Yes, I am running on the same machine.

That doesn't surprise me. You have many things contending for the same compute resources: jmeter, gateway the microservice and whatever else happens to be running (browser, ide, etc...).

I tried running the gateway on a separate one also on production setup, I got less 504 response code (3-4) but issue is still there.

Please provide steps on how exactly the issue can be reproduced.

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.

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.

authors: OlgaMaciaszek ShahzebAnsari spencergibb spring-issuemaster


text:
Spring Cloud Gateway GRPC routing doesn't provide errors correctly

It seems like Spring Cloud Gateway routing GRPC requests not properly - when server responds with error gateway provides it to client incorrectly which leads to error lose because client can't handle it.
I've got 3 apps - grpc-client, grpc-simple-gateway and grpc-server from Spring GRPC gateway example project (original article, original project on github). Algorythm is - grpc-client sends request to gateway, it routes request to grpc-server, grpc-server answers with a message to gateway, and gateway returns message to the grpc-client.
When grpc-server handle request with success (grpc-status = 0) then everything works fine - client correctly obtains the response. But when grpc-server responds with an exception (grpc-status != 0) then gateway 1) sends this error message to client, but for some reason not closes the stream 2) sends second empty message just to close the stream. Client skips first error message (because error message must close the stream) and read only empty last message. In clients logs it looks this way:
// Below receiving of message with error (grpc-status = 5 which means not-found) but for some reason stream is not closed: endStream = false
DEBUG 38436 --- [-worker-ELG-1-2] i.g.n.s.i.grpc.netty.NettyClientHandler  : [id: 0x66c97813, L:/127.0.0.1:54323 - R:localhost/127.0.0.1:8090] INBOUND HEADERS: streamId=3 headers=GrpcHttp2ResponseHeaders[:status: 200, x-request-header: header-value, trailer: grpc-status, content-type: application/grpc, grpc-status: 5, grpc-message: test exception] padding=0 endStream=false
// Then gateway sends second message just to close a stream: endStream=true
DEBUG 38436 --- [-worker-ELG-1-2] i.g.n.s.i.grpc.netty.NettyClientHandler  : [id: 0x66c97813, L:/127.0.0.1:54323 - R:localhost/127.0.0.1:8090] INBOUND HEADERS: streamId=3 headers=GrpcHttp2ResponseHeaders[grpc-status: 0] padding=0 endStream=true

It leads to error: INTERNAL: No value received for unary call - which is incorrect.
If omit gateway and invoke server directly from client then everything works fine - client receives only one message with end of stream and client happily handle it. In clients logs it looks this way:
// Only one message - with endStream = true
DEBUG 40800 --- [-worker-ELG-1-2] i.g.n.s.i.grpc.netty.NettyClientHandler  : [id: 0x354d0b37, L:/127.0.0.1:54349 - R:localhost/127.0.0.1:6565] INBOUND HEADERS: streamId=3 headers=GrpcHttp2ResponseHeaders[:status: 200, content-type: application/grpc, grpc-status: 5, grpc-message: test exception] padding=0 endStream=true

It leads to error: NOT_FOUND: test exception - which is correct.
Steps to reproduce:
I forked original spring example project, add unconditional response with error from grpc-server and enable trace logs - reproducible example based on original spring cloud gateway grpc example. Steps to reproduce are to just clone project and run this:
./gradlew :grpc-server:bootRun
./gradlew :grpc-simple-gateway:bootRun
./gradlew :grpc-client:bootRun

Meaningful logs with commentary are here in gist
Conclusion - it looks like gateway must send endStream=true with an error message but it doesn't.
Update
After long investigation we found that described bug seems like yet not implemented functionality. Below are short results of investigation:
When preparing a response in the netty implementation, the endStream http/2 flag is set - it depends on what type the nettyResponse variable will be in HttpServerOperations: endStream=true is set if nettyResponse instanceof LastHttpContent. After contacting the server, HttpClientResponse res contains the correct response. It can be DefaultFullHttpResponse (implements LastHttpContent) or DefaultHttpResponse (does not implement LastHttpContent). The problem is that when creating HttpServerOperations, the nettyResponse field is instantiated by DefaultHttpResponse (it is then populated with data from HttpClientResponse res).
That is, even if HttpClientResponse was DefaultFullHttpResponse in the nettyResponse field, HttpServerOperations will still have DefaultHttpResponse, which leads to the fact that when sending a response from gateway to the client the response instanceOf LastHttpContent check is always false, which in turn leads to setting endStream=false. That is, in the process of preparing a response from the server to be sent to the client, endStream=true is always lost.
We also made a workaround solution which fixes this behaviour. It consists of two parts:

Main changes are made in reactory-netty, you can find it here (all in one commit):
https://github.com/rrevyakin/reactor-netty-with-grpc-workaround/tree/v.1.0.21.1
Simple Spring Cloud GRPC Gateway with improved (hacked) NettyRoutingFilter:
https://github.com/rrevyakin/spring-cloud-grpc-gateway-with-workaround

Solution is a hack but it can be useful for you in investigation of this bug.

@rrevyakin I did some digging and it looks like the "grpc-status" trailing header is not being set in the GRPCResponseHeadersFilter.
In there the grpc-status is always hardcoded to "0" which is OK in the grpc world. Patching the GRPCResponseHeadersFilter to properly set the trailerHeaders to the correct value looks to solve my issue where the status error status is being propagated.

@rrevyakin in this issue: https://github.com/spring-cloud/spring-cloud-gateway/issues/2724 i had a fix for a patched header due to usage of ServerHttpResponseDecorator that was not unwrapped.
You could try to set the trailerHeader value that is provided from the headers block to the correct value to see if that solves your connection issue :)

Duplicates #2562

@spencergibb, hello!
We reproduced changes from #2914 on our minimal example and faced the same problem as mentioned in the issue.
We receive message with an exception and error grpc-status but stream is not closed (endStream = false) and then receive message with grpc-status = 0 and endStream = true. But should be only one message with error grpc-status and endStream = true. Please reopen this issue.
Checked on versions:
org.springframework.boot - 3.0.4,
org.springframework.cloud:spring-cloud-dependencies:2022.0.2

Hi @rrevyakin, the changes are not part of 2022.0.2, they should be part of a new gateway release that you can try out: https://github.com/spring-cloud/spring-cloud-gateway/releases/tag/v4.0.5
Can you double-check with this recently released version to see if we didn't miss anything else? I couldn't find your updates on https://github.com/rrevyakin/spring-cloud-gateway-grpc so I can't reproduce them.

authors: Albertoimpl kkondratov rrevyakin spencergibb


text:
Allow to configure maxIdleTime property for HttpClient

Since 0.9.0.RELEASE of reactor netty there is a possibility
to configure the pooled connection max idle time.
This commit gives the possibility to set it via spring configuration.

@Ziemowit Please sign the Contributor License Agreement!
Click here to manually synchronize the status of this Pull Request.
See the FAQ for frequently asked questions.

@Ziemowit Thank you for signing the Contributor License Agreement!

source: gharchive/pull-request

authors: Ziemowit pivotal-issuemaster


text:
Use Informers instead of Watcher in reload for fabric8

Currently, k8s-native client dependency uses informers for reload functionality, but fabric8 uses watches. We should use informers instead of watchers in fabric8 also.

already handled here. but there are other PRs that need to go first. Just dropping a note so that we do not forget

@ryanjbaxter since you merged the last PR, this can be closed also.

repo: spring-cloud/spring-cloud-kubernetes