jamesfredley commented on issue #16124: URL: https://github.com/apache/grails-core/issues/16124#issuecomment-5243680926
### Verified per-dataformat matrix (and one more correction) I tested each Jackson 2 dataformat individually in a stock 8.0.0-M5 app rather than leaving my earlier statements as inference. Two things changed. Each row is a stock `grails create-app --profile=web` with **only** that one dependency added, `jackson-databind` excluded, asserting only that the application context starts: | Dependency added | Result | Failure site | |---|---|---| | `jackson-dataformat-smile:2.21.4` | **fails to start** | `DefaultHttpMessageConverters.java:334` | | `jackson-dataformat-cbor:2.21.4` | **fails to start** | `DefaultHttpMessageConverters.java:353` | | `jackson-dataformat-yaml:2.21.4` | **fails to start** | `DefaultHttpMessageConverters.java:362` | | `jackson-dataformat-xml:2.21.4` | **starts fine** | - | | `jackson-core:2.21.5` | starts fine | - | | `jackson-core` + `jackson-annotations` | starts fine | - | ### Correction I wrote "and presumably XML" in my previous comment. That is **wrong** - `jackson-dataformat-xml` does not trigger this and the app starts normally. The confirmed trigger set is Smile, CBOR, and YAML. ### The more interesting detail The three failures occur at **three different lines** of `DefaultHttpMessageConverters.detectMessageConverters()` - 334, 353, and 362. These are separate detection branches, one per dataformat, and each independently reaches a `jackson-databind` class without first confirming databind is present. It is not one missing guard but the same omission repeated across several branches, which is worth knowing if the fix is pursued on the Spring side rather than the BOM side. `jackson-dataformat-xml` presumably guards differently or requires databind through another path, which is why it survives. ### Net effect on this issue The trigger is now pinned precisely: - **Breaks startup**: Jackson 2 `jackson-dataformat-smile`, `-cbor`, or `-yaml` on the runtime classpath while Jackson 2 `jackson-databind` is absent. - **Harmless**: Jackson 2 `jackson-core`, `jackson-annotations`, `jackson-dataformat-xml`. Elasticsearch pulls smile, cbor, **and** yaml, which is why it hit this so hard. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
