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]

Reply via email to