-
Notifications
You must be signed in to change notification settings - Fork 41.4k
Closed
Labels
type: regressionA regression from a previous releaseA regression from a previous release
Milestone
Description
Hi
I found a bug when testing version 3.2.0-RC2 when binding in a configuration properties.
My configuration properties:
import com.jayway.jsonpath.JsonPath;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "app.prop1")
public class MyProperties {
String name;
JsonPath jsonPaths;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public JsonPath getJsonPaths() {
return jsonPaths;
}
}
Stacktrace:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.2.0-RC2)
2023-11-03T14:59:22.056+01:00 INFO 18415 --- [ main] [ ] c.e.s.Sb3RestWebmvcApplication : Starting Sb3RestWebmvcApplication using Java 17.0.8 with PID 18415 (/home/jorgerma/dev_tmp/sb3-rest-webmvc/target/classes started by jorgerma in /home/jorgerma/dev_tmp/sb3-rest-webmvc)
2023-11-03T14:59:22.059+01:00 INFO 18415 --- [ main] [ ] c.e.s.Sb3RestWebmvcApplication : No active profile set, falling back to 1 default profile: "default"
2023-11-03T14:59:22.884+01:00 INFO 18415 --- [ main] [ ] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http)
2023-11-03T14:59:22.894+01:00 INFO 18415 --- [ main] [ ] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2023-11-03T14:59:22.895+01:00 INFO 18415 --- [ main] [ ] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.15]
2023-11-03T14:59:22.939+01:00 INFO 18415 --- [ main] [ ] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2023-11-03T14:59:22.940+01:00 INFO 18415 --- [ main] [ ] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 843 ms
2023-11-03T14:59:23.168+01:00 WARN 18415 --- [ main] [ ] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.boot.context.properties.ConfigurationPropertiesBindException: Error creating bean with name 'app.prop1-com.example.sb3restwebmvc.config.MyProperties': Could not bind properties to 'MyProperties' : prefix=app.prop1, ignoreInvalidFields=false, ignoreUnknownFields=true
2023-11-03T14:59:23.169+01:00 INFO 18415 --- [ main] [ ] i.o.sdk.trace.SdkTracerProvider : Calling shutdown() multiple times.
2023-11-03T14:59:23.172+01:00 INFO 18415 --- [ main] [ ] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
2023-11-03T14:59:23.175+01:00 WARN 18415 --- [ main] [ ] o.a.c.loader.WebappClassLoaderBase : The web application [ROOT] appears to have started a thread named [BatchSpanProcessor_WorkerThread-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
java.base@17.0.8/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.8/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
java.base@17.0.8/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1672)
java.base@17.0.8/java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.java:435)
app//io.opentelemetry.sdk.trace.export.BatchSpanProcessor$Worker.run(BatchSpanProcessor.java:253)
java.base@17.0.8/java.lang.Thread.run(Thread.java:833)
2023-11-03T14:59:23.187+01:00 INFO 18415 --- [ main] [ ] .s.b.a.l.ConditionEvaluationReportLogger :
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2023-11-03T14:59:23.201+01:00 ERROR 18415 --- [ main] [ ] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to bind properties under 'app.prop1.json-paths' to com.jayway.jsonpath.JsonPath:
Reason: java.lang.IllegalStateException: Failed to extract parameter names for private com.jayway.jsonpath.JsonPath(java.lang.String,com.jayway.jsonpath.Predicate[])
Action:
Update your application's configuration
Reviewing the problem in more detail, this error occurs when LogCorrelationPropertySource
is in the context, otherwise, the operation is correct.
Lines 36 to 49 in ab2c7d0
class LogCorrelationEnvironmentPostProcessor implements EnvironmentPostProcessor { | |
@Override | |
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { | |
if (ClassUtils.isPresent("io.micrometer.tracing.Tracer", application.getClassLoader())) { | |
environment.getPropertySources().addLast(new LogCorrelationPropertySource(this, environment)); | |
} | |
} | |
/** | |
* Log correlation {@link PropertySource}. | |
*/ | |
private static class LogCorrelationPropertySource extends PropertySource<Object> { | |
In Spring boot 3.1.5 it works fine.
I attach a small example to reproduce it.
Metadata
Metadata
Assignees
Labels
type: regressionA regression from a previous releaseA regression from a previous release