Hot patch a running system without rebooting
Overview
Patch - small hot update part of modules without rebooting. Zip-the archive contains one or more modules and possibly some assemblies.
This method is used for small changes when it is necessary to apply fresh fixes without waiting for the technological hour. The patch is built for a specific version of the system to avoid loss of integrity.
When reinstalling a version from the distribution and when upgrading, all previously applied patches are eliminated.
Patch archives are downloaded to the system and stored in its file partitions. It is not allowed to apply past patches after system update.
Patch application procedure
Step 1. log in to the master domain under the role account "admin". Open the Settings application":

Step 2. Select "System/Patch":

Step 3. Select the zip archive containing the patch:

Step 4. Upload the selected archive to the server by pressing the "Upload" button". As a result, the unpacked composition of the archive will be displayed on the right:

Step 5. Check the uploaded files by clicking the "Check" button".
The "Status" field will list the node composition and the integral result of new module checks on each server node.

Step 6: Initiate the application by clicking the "Apply" button".
As a result, the files in the archive will replace the contents of the current directory with the system - exactly the version that is active. All nodes will then apply the changes without rebooting.
The "Result" field will list the composition of the nodes and the integral result of applying the new modules on each node. From the results of all nodes a final integral status will be collected: when several statuses are combined, the status with the smaller code becomes the final status:
-
error = 1 - an error occurred during hot loading of the module;
-
not_beam = 2 - file, is not an erlang module;
-
wrong_path = 3 - the path to the modules in the archive does not correspond to the expected one;
-
not_updated = 4 - failed boot. In this case, a manual reboot is shown for the nodes in which this condition occurred in the System/Nodes section";
-
not_changed = 5 - module version matches the one already loaded;
-
ok = 6 - module loaded successfully;
-
not_loaded = 7 - module is not loaded. This happens if the node does not execute processes served by the module. If the patch contains modules of various specific microservices, this status occurs everywhere, and it is normal.

Step 7. Delete the downloaded archive with the patch to prevent its accidental application in the future:

After that, all system processes will either continue to run in the new versions immediately or on the next iteration of the message processing cycle.
Limitations
-
It is not possible to patch to the new version entirely.
-
Patching system libraries is not possible.
-
When filling media libraries it is necessary to reload some nodes manually in the "System/Nodes" section".
-
The maximum size of a downloadable zip archive is 10MB.
A patch has the potential to disrupt the integrity of processes and states. In this case a rollback will be required (in some cases an anti-patch will suffice, in other cases this can be a complex manual operation that requires training). The last resort is to reinstall the system from a docker image with a connection to the same storage (databases, brokers, file system partitions and directories).