<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
erts-8.3.5 is OTP-19.3.6, so that should be ok.</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<a href="https://erlang.org/download/otp_versions_tree_app_vsns.html" id="LPNoLPOWALinkPreview">https://erlang.org/download/otp_versions_tree_app_vsns.html</a></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div class="_Entity _EType_OWALinkPreview _EId_OWALinkPreview _EReadonly_1"></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
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.</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
But if I would guess, this does not seem like a problem with the handshake, but rather something lower level TCP/IP related.<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
/Sverker</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div id="appendonsend"></div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font style="font-size:11pt" face="Calibri, sans-serif" color="#000000"><b>From:</b> erlang-questions <erlang-questions-bounces@erlang.org> on behalf of Bogdan Andu <bog495@gmail.com><br>
<b>Sent:</b> Tuesday, November 16, 2021 9:31 AM<br>
<b>To:</b> Erlang <erlang-questions@erlang.org><br>
<b>Subject:</b> Re: erlang nodes interop.</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt">
<div class="PlainText">Hi Sverker,<br>
<br>
I think the epmd version on 19 node is this:<br>
<br>
$ ps x|grep epmd<br>
 5312 ?        S      0:00 /usr/lib/erlang/erts-8.3.5/bin/epmd -daemon<br>
<br>
So I think it is of erts version 8.3.5<br>
<br>
<br>
To make things even more strange..<br>
<br>
On this (develoment machine) 24 node does not connect to 19 node<br>
<br>
But on a production machine with identical erlang/OTP 19<br>
24 node does not connect to this 19 node .<br>
<br>
<br>
<br>
<br>
<br>
<br>
On Thu, Nov 11, 2021 at 6:39 PM Bogdan Andu <bog495@gmail.com> wrote:<br>
><br>
> it is not a compatibility issue.<br>
> otherwise they would not be able to connect at all.<br>
><br>
> only that particular case is not working<br>
><br>
> On Thursday, November 11, 2021, Roberto Ostinelli <roberto@ostinelli.net> wrote:<br>
>><br>
>> OTP keeps compatibility with releases which are ± 2 versions different. Therefore, even if you were to achieve the node clustering, other things might fail.<br>
>> I would consider using a separate, non-erlang protocol over TCP for communication between nodes with such different versions.<br>
>><br>
>> Cheers,<br>
>> r.<br>
>><br>
>> On Thu, Nov 11, 2021 at 11:46 AM Bogdan Andu <bog495@gmail.com> wrote:<br>
>>><br>
>>> Hi,<br>
>>><br>
>>> I have two erlang nodes, NodeA and NodeB.<br>
>>> NodeA is OTP version 19 and NodeB is OTP version 24.1.4.<br>
>>><br>
>>> The nodes have the same cookie;<br>
>>> and they are both started as sname nodes.<br>
>>><br>
>>> However, the following happens:<br>
>>> Connecting from NodeB to NodeA always fails.<br>
>>> (Node@B)1> net_kernel:connect_node('Node@A').<br>
>>> (Node@B)2> false<br>
>>><br>
>>> Eleven if I<br>
>>> Until:<br>
>>> Connecting from NodeA to NodeB always succeeds:<br>
>>> (Node@A)1> net_kernel:connect_node('Node@B').<br>
>>> (Node@A)2> true<br>
>>><br>
>>> After that, connecting from NodeB to NodeA succeeds:<br>
>>> (Node@B)1> net_kernel:connect_node('Node@A').<br>
>>> (Node@B)2> true<br>
>>><br>
>>> The same behaviour with net_adm:ping/1 or erlang:set_cookie(/2<br>
>>><br>
>>> A version 19 erlang node is needed because interoperability with<br>
>>> legacy internal ssl systems andalso other systems in production<br>
>>> depend on OTP 19.<br>
>>><br>
>>> An OTP  19 node is old enough to support older ssl protocols and<br>
>>> new enough to NOT generate the following error in an otp 24 node:<br>
>>> rejected since it cannot handle ["BIG_CREATION"]<br>
>>><br>
>>> I need connection from NodeA to NodeB to always succeed<br>
>>> because NodeB is the initiating(client) to NodeA, and<br>
>>> NodeA is a RPC server for NodeB.<br>
>>><br>
>>> What can be done?<br>
>>><br>
>>> Thank you,<br>
>>><br>
>>> Bogdan<br>
</div>
</span></font></div>
</body>
</html>