Towards Correct Dependency Orders in Erlang Upgrades
Dániel Ferenczi, Melinda Tóth · Acta Cybernetica · 2025
Erlang tooling offers rich options to control the exact tasks to perform during an upgrade. This control aims to allow for zero-downtime upgrades. Upgrades affecting multiple dependent modules must reflect the dependency order in the upgrade's configuration, as an erroneous configuration results in unintended behaviour, possibly even downtime. This paper presents two static analysis-based checkers for verifying module-related aspects of upgrades. In our first analysis, we compare the actual dependency order derived from the source code with that expressed in the upgrade's configuration. We also analyze the code to find circular dependencies among its modules. These pose a problem during upgrades and are generally good practices to avoid.