Re: gen_server:call internal format & OTP compatibility
Roberto Ostinelli <[email protected]>
| Newsgroups | gmane.comp.lang.erlang.general |
|---|---|
| Message-ID | <CAFXp3LK_KZx5=Apj-_ftAiUL_TqLTR6d-pG4nTgQr_=HJ9jxPw@mail.gmail.com> |
This makes sense, Rickard. Thank you for your clarification for what the ± 2 releases of distribution also covers the infra-node message protocols. Best, r. On Thu, Oct 14, 2021 at 4:23 PM Rickard Green <[email protected]> wrote: > > > On Wed, Oct 13, 2021 at 10:56 PM Roberto Ostinelli <[email protected]> > wrote: > >> All, >> I'm writing a distributed library that I would like to be compatible with >> clusters running multiple OTP versions. I am aware that backwards >> compatibility for the distribution protocol is only promised for two major >> releases in either direction, but that's already pretty significant. >> >> Therefore, for instance maybe I should avoid using gen_server:call/2,3 to >> call processes running on a different node with something like >> gen_server:call({?MODULE, RemoteNode}, Message). >> >> My thinking is that the internal call message format of gen_server is an >> internal implementation detail subject to change, thus it might be >> incompatible on different OTP versions, and if this is the case then the >> previous call would fail. >> >> > However, it's a pity to not use the robust usage of standard API calls. On >> the other hand, it does not look like this message format has changed >> recently, so maybe I'm just overthinking it and should just use >> gen_server:call/2,3 without fear of breaking anything. >> >> I'd like to hear some thoughts, if someone would like to chime in. >> >> Thanks, >> r. >> > > We don't make changes in the gen_server protocol which will cause failures > to communicate with OTP nodes of +-2 releases. Communicating with nodes +-3 > releases might fail. This is also the case if you implement your own > protocol if it utilize the Erlang distribution. That is, I see no point in > implementing your own protocol unless you also stop using the Erlang > distribution all together. It is not safe to connect Erlang nodes over the > Erlang distribution that differs more than 2 releases. Safe in the sense > that you might get communication failures in other subsystems even though > your protocol might work. > > Regards, > Rickard > -- > Rickard Green, Erlang/OTP, Ericsson AB >