ANN On RabbitMQ compatibility with Erlang 22.0 GA

5,413 views
Skip to first unread message

Michael Klishin

unread,
May 14, 2019, 11:04:32 AM5/14/19
to rabbitmq-users
Dear RabbitMQ community,

Erlang/OTP 22.0 GA has shipped a few hours ago. It's a pretty exciting release [1]
so I expect many of you would be interesting in trying it. Below are some of our team's
findings about RabbitMQ compatibility with OTP 22.

As with any major Erlang release, there are breaking changes. The rate of those is only
accelerating (I think that's for the better). The good news is that our team started working
on OTP 22 compatibility several months ago and we have two pipelines that run all core RabbitMQ 3.8
and mixed 3.8/3.7 cluster tests on Erlang 22. As of right now, all core tests are green and some plugin
failures are not related to Erlang 22.

I have been using Erlang 22 as my daily development driver for a few weeks. As far as I can tell,
there are no issues.

That said, there hasn't been enough time to test this release, there is at least one known bug that I
consider serious [2], there are no Debian and RPM packages yet, the Docker image may need adapting,
and so on. So please don't upgrade to Erlang 22 just yet and wait for a few weeks.
We will be posting updates on discovered issues, Docker image and package availability to this thread
for the next month or two.

Cheers.

--
MK

Staff Software Engineer, Pivotal/RabbitMQ

Michael Klishin

unread,
May 14, 2019, 1:41:07 PM5/14/19
to rabbitmq-users
A few initial updates.

RabbitMQ currently disables TLSv1.3 support. It is not complete in OTP 22. We will re-enable it when the client side of TLSv1.3 is implemented or enough evidence that users want to run with it.

We have produced Erlang 22 Debian packages for Ubuntu 16.04 and Debian Stretch. Ubuntu 18.04, Debian Buster are yet to come.

Finally, with Erlang 22.0 GA out, we will drop Erlang 20.3.x support in 3 months (mid-August 2019) [1].

Mark Waite

unread,
May 15, 2019, 8:42:58 AM5/15/19
to rabbitmq-users
Many thanks for the information.

Unfortunately the update to Erlang 22 on the main debian erlang repository for bionic is incompatible with the current version of rabbitmq-server (3.7.14-1) on the main rabbitmq debian repository for bionic, resulting in a non-functioning rabbitmq-server after applying the (security) updates today.
I tried to switch to the erlang-21.x repository, as per https://github.com/rabbitmq/erlang-debian-package#erlangotp-version however I am getting the following messages when running apt-get update after changing the component from erlang to erlang-21.x:
W: Skipping acquire of configured file 'erlang-21.x/i18n/Translation-en_AU' as repository 'http://dl.bintray.com/rabbitmq-erlang/debian bionic InRelease' doesn't have the component 'erlang-21.x' (component misspelt in sources.list?)
W: Skipping acquire of configured file 'erlang-21.x/i18n/Translation-en' as repository 'http://dl.bintray.com/rabbitmq-erlang/debian bionic InRelease' doesn't have the component 'erlang-21.x' (component misspelt in sources.list?)
W: Skipping acquire of configured file 'erlang-21.x/cnf/Commands-amd64' as repository 'http://dl.bintray.com/rabbitmq-erlang/debian bionic InRelease' doesn't have the component 'erlang-21.x' (component misspelt in sources.list?)

In the end, the only way I could get a working erlang version 21 was to apt purge the bintray.com versions of erlang, remove the erlang repo line from the apt sources.d/bintray config file and download and install the all-i-one package from: https://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_1_general/esl-erlang_21.3.8.1-1~ubuntu~bionic_amd64.deb

Any ideas what could be causing the "Skipping acquire of configured file" messages with the erlang-21.x repo and suggestions for possible solutions would be most welcome.

Best regards
MW

Michael Klishin

unread,
May 15, 2019, 11:02:29 AM5/15/19
to rabbitmq-users
We are not going to answer any Erlang 21.x questions in this thread, sorry. It's about Erlang 22.

Please start a new thread and provide your apt source list.
There is an 'erlang-21.x' component in the repository for Ubuntu 18.04 (bionic) [1].

--
You received this message because you are subscribed to the Google Groups "rabbitmq-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rabbitmq-user...@googlegroups.com.
To post to this group, send email to rabbitm...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/rabbitmq-users/6fbc8eb3-4cf4-4a17-854b-c63074b3a72c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Michael Klishin

unread,
May 15, 2019, 11:24:36 AM5/15/19
to rabbitmq-users
The Debian package incompatibility comes down to the following Erlang package restriction [1] RabbitMQ packages have.
This is by design to avoid development versions of OTP 22 from being installed before it goes GA. Now that it is GA,
we will mark OTP 22 as supported in RabbitMQ 3.7.15.

There's also a way to pin Erlang packages to a specific version [2] and/or repository to install Erlang 21.3.x or any other provided version.

FTR, we can reproduce the `Skipping acquire of configured file` warning. Our repository does not provide translation files
as they are not required. I could successfully install Erlang packages as explained in [3] using


as the apt source list. Note that I also had to install apt-transport-https first [4] and then the repository signing key.

I'm updating our Debian Erlang package docs. Thanks for bringing this to our attention.

Michael Klishin

unread,
May 16, 2019, 10:42:41 AM5/16/19
to rabbitmq-users
There's a separate thread for Bintray apt repository users which were tripped by the early Erlang 22 release [1].


Michael Klishin

unread,
May 16, 2019, 1:07:48 PM5/16/19
to rabbitmq-users
Another note: HiPE should be considered a no-op on Erlang 22 [1].

I'm yet to try it but looks like if the compiled code emits an instruction new to 22, that disables HiPE. Nothing should fail in theory but
if you enable HiPE in your RabbitMQ config file, please disable it while moving to Erlang 22.


On Thu, May 16, 2019 at 5:42 PM Michael Klishin <mkli...@pivotal.io> wrote:
There's a separate thread for Bintray apt repository users which were tripped by the early Erlang 22 release [1].


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

For more options, visit https://groups.google.com/d/optout.

vikinghawk

unread,
May 16, 2019, 2:41:46 PM5/16/19
to rabbitmq-users
Does the RabbitMQ team use HiPE in any of your testing or validation environments?

We have been using it in Prod for several years now without any known issues at this point, but it sounds like the community is starting to move away from it.


On Thursday, May 16, 2019 at 12:07:48 PM UTC-5, Michael Klishin wrote:
Another note: HiPE should be considered a no-op on Erlang 22 [1].

I'm yet to try it but looks like if the compiled code emits an instruction new to 22, that disables HiPE. Nothing should fail in theory but
if you enable HiPE in your RabbitMQ config file, please disable it while moving to Erlang 22.


On Thu, May 16, 2019 at 5:42 PM Michael Klishin <mkli...@pivotal.io> wrote:
There's a separate thread for Bintray apt repository users which were tripped by the early Erlang 22 release [1].


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

To post to this group, send email to rabbitm...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/rabbitmq-users/53bd85c6-6f6d-493b-a594-dd28996683bf%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Michael Klishin

unread,
May 16, 2019, 3:20:14 PM5/16/19
to rabbitmq-users
We had it enabled in at least one small test suite. Unfortunately if it's no longer maintained
by the OTP team (it is by University of Uppsala) and major releases ship without HiPE support,
it'd be pretty unwise for us to recommend it.

Hopefully a new LLVM-based JIT is coming to Erlang one day (we've been waiting for it for years now).

To unsubscribe from this group and stop receiving emails from it, send an email to rabbitmq-user...@googlegroups.com.

To post to this group, send email to rabbitm...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

Michael Klishin

unread,
May 16, 2019, 5:58:00 PM5/16/19
to rabbitmq-users
RabbitMQ Docker image will adopt Erlang 22 after several patch releases come out [1].
So there is no ETA ;)

Rod

unread,
Aug 5, 2019, 1:56:29 PM8/5/19
to rabbitmq-users
Hey Michael, when do you think we can start using Erlang 22 with latest version of RabbitMQ without problems you mentioned in first comment?

Michael Klishin

unread,
Sep 9, 2019, 1:40:35 PM9/9/19
to rabbitmq-users
Erlang 22 has been fully supported since late May 2019 [1].


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

Michael Klishin

unread,
Sep 18, 2019, 10:48:25 AM9/18/19
to rabbitmq-users
Erlang 22.1 was released yesterday. We haven't found any incompatibilities so far. All pipelines are as green
as on 22.0 :)
Reply all
Reply to author
Forward
0 new messages