You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by GitBox <gi...@apache.org> on 2020/10/01 23:14:17 UTC

[GitHub] [kafka] rhauch commented on pull request #9306: KAFKA-10477: Enabling the same behavior of NULL JsonNodeType to MISSI…

rhauch commented on pull request #9306:
URL: https://github.com/apache/kafka/pull/9306#issuecomment-702443976


   Thanks for putting together this comprehensive list of AK versions, Jackson versions, and behavior.
   
   > * ak v2.3.0 -> j v2.9.9 [Looks like an outlier, where ak version increased with a decrease in jackson-databind version]
   I don't think this was an outlier. If you sort them by release dates, things look a bit more logical and you can see how the Jackson versions only continually increase over time:
   
   ak v2.1.0 (2018-11-20)-> j v2.9.7
   ak v2.1.1 (2019-02-15) -> j v2.9.8
   ak v2.2.0 (2019-03-22) -> j v2.9.8
   ak v2.2.1 (2019-06-01) -> j v2.9.8
   ak v2.3.0 (2019-06-24) -> j v2.9.9
   ak v2.3.1 (2019-10-24) -> j v2.10.0
   ak v2.2.2 (2019-12-01) -> j v2.10.0
   ak v2.4.0 (2019-12-13) -> j v2.10.0
   ak v2.4.1 (2020-03-10)-> j v2.10.0
   ak v2.5.0 (2020-04-14) -> j v2.10.2
   ak v2.6.0 (2020-08-03) -> j v2.10.2
   ak v2.5.1 (2020-08-10) -> j v2.10.2
   
   IOW, the following **versions** are all affected since they use Jackson 2.10.x:
   * 2.3.1
   * 2.2.2
   * 2.4.0
   * 2.4.1
   * 2.5.0
   * 2.5.1
   * 2.6.0
   
   and thus the following **branches** are affected since they now use Jackson 2.10.x:
   * `2.2`
   * `2.3`
   * `2.4`
   * `2.5`
   * `2.6`
   
   I've also gone through a number of versions of the https://github.com/FasterXML/jackson-databind code, looking for how MissingNode is used. It's obvious that MissingNode is used a lot more prevalently in 2.10.0. But the documentation for `MissingNode` is as follows:
   
   >  In most respects this placeholder node will act as {@link NullNode};
   > for example, for purposes of value conversions, value is considered
   > to be null and represented as value zero when used for numeric
   > conversions.
   
   So I think it's pretty clear that we should treat `JsonNodeType.MISSING` as null. This is what this PR tries to do, and I'm now less concerned about unexpected behavioral changes after having read and verified this analysis.
   
   Once this PR is merged to `trunk`, this fix will need to be backported to the following **branches** that are all affected because they use Jackson 2.10.x:
   * `2.2`
   * `2.3`
   * `2.4`
   * `2.5`
   * `2.6`


----------------------------------------------------------------
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.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org