Don't bump the version of HikariCP in 2.4.x stream

93 views
Skip to first unread message

Mirco Dotta

unread,
Jul 31, 2015, 4:33:02 AM7/31/15
to play-fram...@googlegroups.com
2.4.0 is not binary compatible with 2.3.x. See https://github.com/brettwooldridge/HikariCP/issues/360

— Mirco
----------------
Mirco Dotta - @mircodotta

Typesafe – Build reactive apps!

signature.asc

Mirco Dotta

unread,
Jul 31, 2015, 10:56:28 AM7/31/15
to play-fram...@googlegroups.com
Turns out the situation is potentially much worse. It seems there are no binary compatibility guarantees across HikariCP releases yet. There is a best effort on keeping deprecated methods for about 6 months, but the version number cannot be used to know if a new release is binary compatible with an older one. Hence, that means we should no longer update the HikariCP version of a Play release, as we are risking to introduce binary incompatibilities.

— Mirco
----------------
Mirco Dotta - @mircodotta

Typesafe – Build reactive apps!

signature.asc

Marcos Silva Pereira

unread,
Aug 1, 2015, 4:04:53 PM8/1/15
to Play framework dev
Hum, ok. The last bump was made here:


It was still binary compatible. I will check if it is ok to backport the PR above.

Thanks for the warning, Mirco.

Best,

Mirco Dotta

unread,
Aug 2, 2015, 4:59:11 AM8/2/15
to Marcos Silva Pereira, Play framework dev
Hi Marcos,

How did you asses that HikariCP 2.3.8 is binary compatible with 2.3.9?

When I used japi-compiler-checker, a tool for checking both source and binary incompatibilities between two versions of a same Java library, it reported quite a few binary incompatibilities between these two versions. The full report produced by the tool is linked in this comment. Brett (the HikariCP maintainer), pointed out that the changes might have happened in the non-public API, though it doesn’t seem to be enforced in the binaries what is public from what is not, hence there is still a bit of a risk (and, from a practical point of view, the two releases are still binary incompatible).

All I cared to point out is that there is no binary compatibility guarantee across HikariCP releases at the moment. There is a best effort in keeping the deprecated methods for about 6 months [1], but the project is not using semantic versioning yet, hence you can’t tell from the version number if you may incur into binary incompatibilities.

— Mirco

----------------
Mirco Dotta - @mircodotta

Typesafe – Build reactive apps!

--
You received this message because you are subscribed to the Google Groups "Play framework dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to play-framework-...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

signature.asc

Mirco Dotta

unread,
Aug 2, 2015, 5:03:12 AM8/2/15
to Marcos Silva Pereira, Play framework dev
I forgot to say that my take would be not to backport that PR in the 2.4.x stream.

By the way, thanks for chiming in! :-)

----------------
Mirco Dotta - @mircodotta

Typesafe – Build reactive apps!

signature.asc

Marcos Pereira

unread,
Aug 2, 2015, 11:20:34 AM8/2/15
to Mirco Dotta, Play framework dev
Hum, 

My check was sloppy: all the tests passes. Did not know about japi-compliance-checker and I will use it to check the next dependencies upgrades. Thanks for pointing that out, Mirco. :-)

But looks like HikariConfig and HikariDataSource public API did not changed from 2.3.8 to 2.3.9 which is ok in our case because that is the only part of HikariCP API that we use directly. Also, I've decide to check against my application (which uses HikariCP JMX support) and everything works as expected.

Anyway, I understand that we have no reason to get into this kind of risk here. I will create a different PR to fix the problem of connectionInitSql not being mapped and without the HikariCP upgrade.

Best,

Mirco Dotta

unread,
Aug 2, 2015, 3:10:39 PM8/2/15
to Marcos Pereira, Play framework dev
Hum, 

My check was sloppy: all the tests passes. Did not know about japi-compliance-checker and I will use it to check the next dependencies upgrades. Thanks for pointing that out, Mirco. :-)

Ehehe, no problem. In fact, I’d love that the work you are planning to do manually could eventually be automated with MiMa (and I actually believe it shouldn’t be too much work to prototype it). Until then, manually checking is definitely something I’ll make sure to do as well.

But looks like HikariConfig and HikariDataSource public API did not changed from 2.3.8 to 2.3.9 which is ok in our case because that is the only part of HikariCP API that we use directly. 

Good to know! By the way, the latest version of hikaricp is 2.4.0 (just saying ;-))

Also, I've decide to check against my application (which uses HikariCP JMX support) and everything works as expected.

Anyway, I understand that we have no reason to get into this kind of risk here. I will create a different PR to fix the problem of connectionInitSql not being mapped and without the HikariCP upgrade.

Agreed.

Enjoy your Sunday! ;-)
signature.asc
Reply all
Reply to author
Forward
0 new messages