erlang nodes interop.

Sverker Eriksson sverker.eriksson@REDACTED
Tue Nov 16 13:26:59 CET 2021

erts-8.3.5 is OTP-19.3.6, so that should be ok.

The distribution setup handshake happens in lib/kernel/src/dist_util.erl. There is a "dist_trace" macro in lib/kernel/include/dist_util.hrl that can be enabled to get some io:format logging from the handshake to see how far it comes.

But if I would guess, this does not seem like a problem with the handshake, but rather something lower level TCP/IP related.


From: erlang-questions <erlang-questions-bounces@REDACTED> on behalf of Bogdan Andu <bog495@REDACTED>
Sent: Tuesday, November 16, 2021 9:31 AM
To: Erlang <erlang-questions@REDACTED>
Subject: Re: erlang nodes interop.

Hi Sverker,

I think the epmd version on 19 node is this:

$ ps x|grep epmd
 5312 ?        S      0:00 /usr/lib/erlang/erts-8.3.5/bin/epmd -daemon

So I think it is of erts version 8.3.5

To make things even more strange..

On this (develoment machine) 24 node does not connect to 19 node

But on a production machine with identical erlang/OTP 19
24 node does not connect to this 19 node .

On Thu, Nov 11, 2021 at 6:39 PM Bogdan Andu <bog495@REDACTED> wrote:
> it is not a compatibility issue.
> otherwise they would not be able to connect at all.
> only that particular case is not working
> On Thursday, November 11, 2021, Roberto Ostinelli <roberto@REDACTED> wrote:
>> OTP keeps compatibility with releases which are ± 2 versions different. Therefore, even if you were to achieve the node clustering, other things might fail.
>> I would consider using a separate, non-erlang protocol over TCP for communication between nodes with such different versions.
>> Cheers,
>> r.
>> On Thu, Nov 11, 2021 at 11:46 AM Bogdan Andu <bog495@REDACTED> wrote:
>>> Hi,
>>> I have two erlang nodes, NodeA and NodeB.
>>> NodeA is OTP version 19 and NodeB is OTP version 24.1.4.
>>> The nodes have the same cookie;
>>> and they are both started as sname nodes.
>>> However, the following happens:
>>> Connecting from NodeB to NodeA always fails.
>>> (Node@REDACTED)1> net_kernel:connect_node('Node@REDACTED').
>>> (Node@REDACTED)2> false
>>> Eleven if I
>>> Until:
>>> Connecting from NodeA to NodeB always succeeds:
>>> (Node@REDACTED)1> net_kernel:connect_node('Node@REDACTED').
>>> (Node@REDACTED)2> true
>>> After that, connecting from NodeB to NodeA succeeds:
>>> (Node@REDACTED)1> net_kernel:connect_node('Node@REDACTED').
>>> (Node@REDACTED)2> true
>>> The same behaviour with net_adm:ping/1 or erlang:set_cookie(/2
>>> A version 19 erlang node is needed because interoperability with
>>> legacy internal ssl systems andalso other systems in production
>>> depend on OTP 19.
>>> An OTP  19 node is old enough to support older ssl protocols and
>>> new enough to NOT generate the following error in an otp 24 node:
>>> rejected since it cannot handle ["BIG_CREATION"]
>>> I need connection from NodeA to NodeB to always succeed
>>> because NodeB is the initiating(client) to NodeA, and
>>> NodeA is a RPC server for NodeB.
>>> What can be done?
>>> Thank you,
>>> Bogdan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the erlang-questions mailing list