feat(spring): [Logs and Metrics Enable Flags 10] Warn for legacy Logs property - #5951
feat(spring): [Logs and Metrics Enable Flags 10] Warn for legacy Logs property#5951adinauer wants to merge 3 commits into
Conversation
Inspect the Spring Environment before SDK initialization and emit tailored migration warnings for explicit sentry.logs.enabled values without binding or applying the obsolete property. Co-Authored-By: Claude <noreply@anthropic.com>
|
📲 Install BuildsAndroid
|
Performance metrics 🚀
|
Emit legacy Logs property diagnostics after Sentry.init so the configured diagnostic logger is available. Co-Authored-By: Claude <noreply@anthropic.com>
| Boolean.TRUE.equals(environment.getProperty("sentry.logs.enabled", Boolean.class)); | ||
| if (enableLogs) { |
There was a problem hiding this comment.
Bug: The application will crash on startup if sentry.logs.enabled is set to a non-boolean value, as the call to environment.getProperty lacks error handling for invalid conversions.
Severity: HIGH
Suggested Fix
Wrap the environment.getProperty("sentry.logs.enabled", Boolean.class) call in a try-catch block to handle ConversionFailedException. Log a warning if the property value is invalid and default to a sensible value (e.g., false) to allow the application to start successfully. This makes the configuration more robust against user error.
Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent. Verify if this is a real issue. If it is, propose a fix; if not, explain why it's
not valid.
Location:
sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryAutoConfiguration.java#L200-L201
Potential issue: The code checks for the existence of the `sentry.logs.enabled` property
but does not validate its value before attempting to convert it to a `Boolean`. If a
user provides a non-boolean string (e.g., "enabled" instead of "true"), Spring's
`StringToBooleanConverter` will throw a `ConversionFailedException`. Since this
exception is not caught during the creation of the `sentryHub` bean, it will propagate
up and cause the entire Spring application context to fail to initialize, preventing the
application from starting.
Also affects:
sentry-spring-boot/src/main/java/io/sentry/spring/boot/SentryAutoConfiguration.java:195~196sentry-spring-boot-4/src/main/java/io/sentry/spring/boot4/SentryAutoConfiguration.java:198~199
Did we get this right? 👍 / 👎 to inform future reviews.
There was a problem hiding this comment.
if this is not a regression then this is nothing to worry about. we probably want to fail here anyways.
PR Stack (Logs and Metrics Enable Flags)
📜 Description
Injects the Spring
Environmentinto SDK initialization for all three Spring Boot variants and detects explicitsentry.logs.enabledconfiguration. Migration warnings are emitted afterSentry.init, when the diagnostic logger has been initialized.Both
trueandfalsevalues emit tailored migration warnings. The obsolete property is not restored toSentryPropertiesand does not affect capture or the newsentry.logging.logs-enabledintegration control. Absent configuration emits no warning.💡 Motivation and Context
After removal of the aggregate Logs option, Spring's relaxed binder ignores the old property. Inspecting the complete Spring
Environmentpreserves a useful migration diagnostic across property files, YAML, environment variables, command-line values, and other property sources.💚 How did you test it?
./gradlew :sentry-spring-boot:test :sentry-spring-boot-jakarta:test :sentry-spring-boot-4:test./gradlew spotlessApply apiDumptrue, and explicitfalsetests to all three Spring Boot variants📝 Checklist
sendDefaultPIIis enabled.🔮 Next steps
Avoid starting the Logs batch worker thread until the first accepted Log item.
#skip-changelog