You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Recently upgraded the spring actuator from 2.4.10 to 2.7.4.
In our project, we are using the configTree import in Kubernetes as below
spring.config.import: "configtree:/app/**"
There is config file binding of "management.server.port" with value 8081 and "server.port" with value 8080
Getting the below error after upgrading:
Caused by: java.lang.IllegalStateException: Error processing condition on org.springframework.boot.actuate.autoconfigure.endpoint.web.reactive.WebFluxEndpointManagementContextConfiguration.managementHealthEndpointWebFluxHandlerMapping
at org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:60)
at org.springframework.context.annotation.ConditionEvaluator.shouldSkip(ConditionEvaluator.java:108)
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForBeanMethod(ConfigurationClassBeanDefinitionReader.java:193)
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:153)
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:129)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:343)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:247)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:311)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:112)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:746)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564)
at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:66)
at org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$DifferentManagementContextConfiguration.onApplicationEvent(ManagementContextAutoConfiguration.java:150)
at org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$DifferentManagementContextConfiguration.onApplicationEvent(ManagementContextAutoConfiguration.java:122)
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378)
at org.springframework.boot.web.reactive.context.WebServerManager.start(WebServerManager.java:57)
at org.springframework.boot.web.reactive.context.WebServerStartStopLifecycle.start(WebServerStartStopLifecycle.java:40)
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178)
... 14 common frames omitted
Caused by: org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [org.springframework.boot.env.ConfigTreePropertySource$PropertyFileContent] to type [java.lang.Integer]
at org.springframework.core.convert.support.GenericConversionService.handleConverterNotFound(GenericConversionService.java:322)
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:195)
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:175)
at org.springframework.core.env.AbstractPropertyResolver.convertValueIfNecessary(AbstractPropertyResolver.java:265)
at org.springframework.core.env.PropertySourcesPropertyResolver.getProperty(PropertySourcesPropertyResolver.java:91)
at org.springframework.core.env.PropertySourcesPropertyResolver.getProperty(PropertySourcesPropertyResolver.java:68)
at org.springframework.core.env.AbstractEnvironment.getProperty(AbstractEnvironment.java:605)
at org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType.getPortProperty(ManagementPortType.java:64)
at org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType.get(ManagementPortType.java:58)
at org.springframework.boot.actuate.autoconfigure.web.server.OnManagementPortCondition.getMatchOutcome(OnManagementPortCondition.java:49)
at org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:47)
... 35 common frames omitted
To reproduce the issue,
Configure the different port for server.port and management.server.port and import the configuration with configtree.
Suspect:
CharSequenceToObjectConverter is not invoking for the WebFluxEndpointManagementContextConfiguration.managementHealthEndpointWebFluxHandlerMapping and also noticed this method included after 2.5.+
Much appreciated if you provide workaround if any till fixing the issue
The text was updated successfully, but these errors were encountered:
wilkinsona
changed the title
Spring reactive - Webflux Actuator - ManagementPortType Different port with spring config import (configtree) - Getting error ConverterNotFoundException
Configuring management.server.port via a config tree results in a ConverterNotFoundException when the management context is refreshed
Nov 2, 2022
The problem's due to the way in which the child application context for the management server is created. The main application context contains an Environment that uses a ConfigurationPropertySourcesPropertyResolver with an ApplicationConversionService. The conversion service contains a CharSequenceToObjectConverter that allows the PropertyFileContent, which implements CharSequence, to be converted to an Integer. When the child context is created, this conversion service is lost and its Environment uses a PropertySourcesPropertyResolver with a DefaultConversion service which is unable to perform the necessary conversion.
I think the simplest fix would be to configure the child context's Environment to use the same ConversionService as the parent context. However, that would still leave the child context's Environment with a different PropertyResolver implementation. The Environment implementations themselves would also be different. I'd like to discuss this with the team to see how much we want to try to align things.
Hi,
Recently upgraded the spring actuator from 2.4.10 to 2.7.4.
In our project, we are using the configTree import in Kubernetes as below
spring.config.import: "configtree:/app/**"
There is config file binding of "management.server.port" with value 8081 and "server.port" with value 8080
Getting the below error after upgrading:
To reproduce the issue,
Configure the different port for server.port and management.server.port and import the configuration with configtree.
Suspect:
CharSequenceToObjectConverter is not invoking for the WebFluxEndpointManagementContextConfiguration.managementHealthEndpointWebFluxHandlerMapping and also noticed this method included after 2.5.+
Much appreciated if you provide workaround if any till fixing the issue
The text was updated successfully, but these errors were encountered: