Jackson 2.13.0-rc2 released; more time for testing the Release Candidate, fix bugs

49 views
Skip to first unread message

Tatu Saloranta

unread,
Aug 27, 2021, 1:22:33 PM8/27/21
to jackson-...@googlegroups.com, jackson-user
As per title, I decided that instead of trying to release the official 2.13.0, it makes sense to instead push another release candidate.
Decision is due to:

1. Multiple fixes since rc1, including important ones (see https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.13 -- alas, fixes for rc1 not separated)
2. A few bugs remain on the list of "really want to fix for 2.13.0 final" (see https://github.com/FasterXML/jackson-future-ideas/wiki/Jackson-Work-in-Progress)

I have also had much less time to work on Jackson itself lately (first due to vacation, but also due to starting a new job which requires a lot of active learning at this point) so things are a bit slow on getting PRs integrated, verified and so on.
I feel that avoiding the rush to "just get it done" makes sense here, to minimize the possibility of regressions.

Having said that, I do hope that the final 2.13.0 will get out by mid-September 2021.

At this point I would REALLY welcome help in regression/compatibility testing Jackson 2.13.0-rc2. Thank you everyone who tested, reported issues with 2.13.0-rc1!

-+ Tatu +-


Nakamura

unread,
Aug 30, 2021, 10:02:20 AM8/30/21
to jackso...@googlegroups.com
Hi Tatu,
I've started testing with RC2 across my company's monorepo, and I'm seeing a bunch of test failures.  Could you please wait until at least next week to promote to stable?  I'll need some time to figure out which are fragile tests vs real regressions.
Best,
Moses

--
You received this message because you are subscribed to the Google Groups "jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jackson-user...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jackson-user/CAGrxA25gN%2BWHoOzF9Rr_umR3%3DPEUs4JQxEM9kO%2BUDL0fYeozrA%40mail.gmail.com.

Tatu Saloranta

unread,
Aug 30, 2021, 1:00:17 PM8/30/21
to jackson-user
On Mon, Aug 30, 2021 at 7:02 AM Nakamura <nakamur...@gmail.com> wrote:
Hi Tatu,
I've started testing with RC2 across my company's monorepo, and I'm seeing a bunch of test failures.  Could you please wait until at least next week to promote to stable?  I'll need some time to figure out which are fragile tests vs real regressions.
Best,
Moses

Yes, I will not be releasing 2.13.0 next weekend: probably will take at least 2 weeks from now on.

-+ Tatu +-
 

On Fri, Aug 27, 2021 at 1:22 PM Tatu Saloranta <tsalo...@gmail.com> wrote:
As per title, I decided that instead of trying to release the official 2.13.0, it makes sense to instead push another release candidate.
Decision is due to:

1. Multiple fixes since rc1, including important ones (see https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.13 -- alas, fixes for rc1 not separated)
2. A few bugs remain on the list of "really want to fix for 2.13.0 final" (see https://github.com/FasterXML/jackson-future-ideas/wiki/Jackson-Work-in-Progress)

I have also had much less time to work on Jackson itself lately (first due to vacation, but also due to starting a new job which requires a lot of active learning at this point) so things are a bit slow on getting PRs integrated, verified and so on.
I feel that avoiding the rush to "just get it done" makes sense here, to minimize the possibility of regressions.

Having said that, I do hope that the final 2.13.0 will get out by mid-September 2021.

At this point I would REALLY welcome help in regression/compatibility testing Jackson 2.13.0-rc2. Thank you everyone who tested, reported issues with 2.13.0-rc1!

-+ Tatu +-


--
You received this message because you are subscribed to the Google Groups "jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jackson-user...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jackson-user/CAGrxA25gN%2BWHoOzF9Rr_umR3%3DPEUs4JQxEM9kO%2BUDL0fYeozrA%40mail.gmail.com.

--
You received this message because you are subscribed to the Google Groups "jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jackson-user...@googlegroups.com.

Nakamura

unread,
Sep 3, 2021, 3:56:14 PM9/3/21
to jackso...@googlegroups.com
OK, I haven't finished working through the issues yet.  I'm trying to upgrade from 2.11.4 to 2.13.0-rc2.  After fixing some expected breaking changes, here are a few I found:

1. We have tests that compare the values of JsonNodes.  After the upgrade, it started failing when it said that IntNode and ShortNode are not equal.  I haven't pinpointed what has changed (whether it's equality, or how things are turned into ShortNode or IntNode). I'll update the thread once I've figured it out.

2.  We have a test that tries to read all of the resources files.  When it comes across jackson, it says "File Not Found".

3.  I'm getting a Malformed class name exception from the jackson-scala-module.
                     java.lang.InternalError: Malformed class name
                     	at java.lang.Class.getSimpleName(Class.java:1330)
                     	at java.lang.Class.getCanonicalName(Class.java:1399)
                     	at com.fasterxml.jackson.module.scala.util.TastyUtil$.hasTastyFile(TastyUtil.scala:10)
                     	at com.fasterxml.jackson.module.scala.util.ClassW.extendsScalaClass(Classes.scala:12)
                     	at com.fasterxml.jackson.module.scala.util.ClassW.extendsScalaClass$(Classes.scala:9)
                     	at com.fasterxml.jackson.module.scala.util.ClassW$$anon$1.extendsScalaClass(Classes.scala:34)
                     	at com.fasterxml.jackson.module.scala.introspect.ScalaAnnotationIntrospector$._descriptorFor(ScalaAnnotationIntrospectorModule.scala:157)
                     	at com.fasterxml.jackson.module.scala.introspect.ScalaAnnotationIntrospector$.fieldName(ScalaAnnotationIntrospectorModule.scala:173)
                     	at com.fasterxml.jackson.module.scala.introspect.ScalaAnnotationIntrospector$.findImplicitPropertyName(ScalaAnnotationIntrospectorModule.scala:46)
                     	at com.fasterxml.jackson.databind.introspect.AnnotationIntrospectorPair.findImplicitPropertyName(AnnotationIntrospectorPair.java:502)
                     	at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector._addFields(POJOPropertiesCollector.java:530)
                     	at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.collectAll(POJOPropertiesCollector.java:421)
                     	at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.getPropertyMap(POJOPropertiesCollector.java:386)
                     	at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.getProperties(POJOPropertiesCollector.java:233)
                     	at com.fasterxml.jackson.databind.introspect.BasicBeanDescription._properties(BasicBeanDescription.java:164)
                     	at com.fasterxml.jackson.databind.introspect.BasicBeanDescription.findProperties(BasicBeanDescription.java:239)
                     	at com.fasterxml.jackson.databind.deser.BasicDeserializerFactory._findCreatorsFromProperties(BasicDeserializerFactory.java:328)
                     	at com.fasterxml.jackson.databind.deser.BasicDeserializerFactory._constructDefaultValueInstantiator(BasicDeserializerFactory.java:272)
                     	at com.fasterxml.jackson.databind.deser.BasicDeserializerFactory.findValueInstantiator(BasicDeserializerFactory.java:223)
                     	at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.buildBeanDeserializer(BeanDeserializerFactory.java:261)
                     	at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:150)
                     	at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer2(DeserializerCache.java:415)
                     	at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:350)
                     	at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:264)
                     	at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:244)
                     	at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142)
                     	at com.fasterxml.jackson.databind.DeserializationContext.findNonContextualValueDeserializer(DeserializationContext.java:632)
                     	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.resolve(BeanDeserializerBase.java:539)
                     	at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:294)
                     	at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:244)
                     	at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142)
                     	at com.fasterxml.jackson.databind.DeserializationContext.findContextualValueDeserializer(DeserializationContext.java:609)
                     	at com.fasterxml.jackson.databind.deser.std.MapDeserializer.createContextual(MapDeserializer.java:316)
                     	at com.fasterxml.jackson.module.scala.deser.GenericMapFactoryDeserializerResolver$Deserializer.createContextual(GenericMapFactoryDeserializerResolver.scala:122)
                     	at com.fasterxml.jackson.databind.DeserializationContext.handlePrimaryContextualization(DeserializationContext.java:825)
                     	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.resolve(BeanDeserializerBase.java:550)
                     	at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:294)
                     	at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:244)
                     	at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142)
                     	at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:642)
                     	at com.fasterxml.jackson.databind.ObjectMapper._findRootDeserializer(ObjectMapper.java:4751)
                     	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4621)
                     	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3575)
                     	at com.fasterxml.jackson.module.scala.ScalaObjectMapper.readValue(ScalaObjectMapper.scala:206)
                     	at com.fasterxml.jackson.module.scala.ScalaObjectMapper.readValue$(ScalaObjectMapper.scala:205)
I have been too busy with other things at work to dig in and understand where these bugs are coming from, or how easy they are to work around, but I'll try to update you shortly.

Best,
Moses

Tatu Saloranta

unread,
Sep 4, 2021, 4:27:20 PM9/4/21
to jackson-user
On Fri, Sep 3, 2021 at 12:56 PM Nakamura <nakamur...@gmail.com> wrote:
>
> OK, I haven't finished working through the issues yet. I'm trying to upgrade from 2.11.4 to 2.13.0-rc2. After fixing some expected breaking changes, here are a few I found:

First of all, thank you for going through testing, reporting issues!

>
> 1. We have tests that compare the values of JsonNodes. After the upgrade, it started failing when it said that IntNode and ShortNode are not equal. I haven't pinpointed what has changed (whether it's equality, or how things are turned into ShortNode or IntNode). I'll update the thread once I've figured it out.

Interesting. I do not have a good idea here; although I do know that
the comparison across different node types and esp. for Numeric types
is challenging in general.
This is one reason why external comparator approach with JsonNode method:

public boolean equals(Comparator<JsonNode> comparator, JsonNode other) {

is strongly recommended; plain `equals()` is notoriously difficult to
make work reliably (has to work "both ways" across different types
etc).

Having said that, IntNode.equals() and ShortNode.equals() appear
unchanged between 2.11 and 2.13; and both would fail comparison
(they assume strict type equality).
So the issue is probably more with construction of ShortNode vs
IntNode for some input...

>
> 2. We have a test that tries to read all of the resources files. When it comes across jackson, it says "File Not Found".
> > ..../repo1.maven.org/com/fasterxml/jackson/core/jackson-databind/2.13.0-rc2/jackson-databind-2.13.0-rc2.jar!/META-INF/versions/11 (No such file or directory)

That is a weird one for sure.

The location of `module-info.class` did move from main-level (in 2.11
and 2.12) to under `META-INF/versions/11`: this to prevent issues with
some older Java 8
clients. But no idea how this could cause other issues.
Possibly worth filing separate jackson-module-scala issue?

>
> I have been too busy with other things at work to dig in and understand where these bugs are coming from, or how easy they are to work around, but I'll try to update you shortly.

Excellent work so far, looking forward to learning more!

-+ Tatu +-
> To view this discussion on the web visit https://groups.google.com/d/msgid/jackson-user/CAEYWR9vUq0t%2BMy7_bKf8A1g_NL1XLXAU_kRT5sPn_hjtZz83HQ%40mail.gmail.com.

Nakamura

unread,
Sep 14, 2021, 6:48:48 PM9/14/21
to jackso...@googlegroups.com
OK, I did some more research.  Two updates:

1.  Filed an issue about the malformed class name
2.  I looked into the JsonNode thing.  Basically we were creating an empty ArrayNode, and calling ArrayNode#add(Short).  Previously, this inserted an IntNode, but now it inserts a ShortNode.  This seems like a bugfix, so I don't think we need to take any action.

The scala bug is the only thing that I think would prevent us from upgrading right now, but I'll try to confirm in the next couple of hours.

Nakamura

unread,
Sep 16, 2021, 5:27:37 PM9/16/21
to jackso...@googlegroups.com
PJ did a great job of fixing the bug, 2.13.0 is good to go as far as I'm concerned.  Thanks again PJ!

Tatu Saloranta

unread,
Sep 16, 2021, 6:54:30 PM9/16/21
to jackson-user
Excellent! Thank you for reporting these issues and working with us on resolving them.

And PJ has done a really good job with the Scala module, as usual. Now it's just me who has to get 2.13.0 out before September ends... :)

-+ Tatu +-

Reply all
Reply to author
Forward
0 new messages