Erlang / Erlang Advanced Interview questions
Explain the internal working of code:purge/1 and code:soft_purge/1?
Both functions remove the old (previous) version of a module from memory, freeing it up so a future reload has room, but they differ in how they treat processes still executing that old code.
| code:purge/1 | code:soft_purge/1 |
| Unconditionally kills any process still running the old version. | Checks first; if any process is still running the old version, it does nothing and returns false. |
| Guarantees the old version is gone afterward. | Only purges if it's already safe — returns true only when nothing was running it. |
Release upgrade tooling typically calls soft_purge first, in a retry loop, giving in-flight
processes time to naturally cycle back through their own module (and switch to the new version) before
resorting to a hard purge that would forcibly terminate anything still lagging behind.
More Related questions...