The title is confusing! It should have been "Do messages get lost during code reloading in erlang?"
In a prod env, how do you make sure that different versions of your code coexist peacefully?
In a prod env, how do you make sure that different versions of your code coexist peacefully?
Easy hot code reloading is one of the great benefits from CSP.
In terms of correctness, I'm not aware of any work that does type checking or serious analysis across version upgrades. Even Erlang's dialyzer will only check each version in isolation. So in practice this means you either test the upgrades with things like continuous integration or even manually, OR do so in very careful and small steps that are easy to reason about locally (very useful for critical applications that can't spare downtime).