appup(4)

NAME
appup - Application upgrade file.

DESCRIPTION

The application upgrade file defines how an application is upgraded in a running system.

This file is used by the functions in systools when generating a release upgrade file (relup).

FILE SYNTAX

The application upgrade file should be called Application.appup where Application is the name of the application. The file should be located in the ebin directory for the application.

The .appup file contains one single Erlang term, which defines the instructions used to upgrade the application. The file has the following syntax:
{Vsn,
  [{UpFromVsn, Instructions}, ...],
  [{DownToVsn, Instructions}, ...]}.

    *   Vsn = string() is the current version of the application.

    *   UpFromVsn = string() is an earlier version of the application to upgrade from.

    *   Instructions is a list of release upgrade instructions, see below.

    *   DownToVsn = string() is an earlier version of the application to downgrade to.

RELEASE UPGRADE INSTRUCTIONS

Release upgrade instructions are interpreted by the release handler when an upgrade or downgrade is made. For more information about release handling, refer to SASL User's Guide.

High-level instructions
{update, Module, Change, PrePurge, PostPurge, [Mod]}
{update, Module, Timeout, Change, PrePurge, PostPurge, [Mod]}
{update, Module, ModType, Timeout, Change, PrePurge, PostPurge, [Mod]}
  Module = atom()
  ModType = static | dynamic
  Timeout = int()>0 | default | infinity
  Change = soft | {advanced,Extra}
  PrePurge = PostPurge = soft_purge | brutal_purge
  Mod = atom()
{load_module, Module, PrePurge, PostPurge, [Mod]}
{add_module, Module}
{remove_application, Application}
{add_application, Application}
{restart_application, Application}

Low-level instructions
{load_object_code, {Lib, LibVsn, [Module]}}
  Lib = atom()
  LibVsn = string()
  Module = atom()
point_of_no_return
{load, {Module, PrePurge, PostPurge}}
  PrePurge = PostPurge = soft_purge | brutal_purge
{remove, {Module, PrePurge, PostPurge}}
{purge, [Module]}
{suspend, [Module | {Module, Timeout}]}
  Timeout = int()>0 | default | infinity
{code_change, [{Module, Extra}]}
{code_change, Mode, [{Module, Extra}]}
  Mode = up | down
  Extra = term()
{resume, [Module]}
{stop, [Module]}
{start, [Module]}
{sync_nodes, Id, [Node]}
{sync_nodes, Id, {M, F, A}}
  Id = term()
  M = F = atom()
  A = [term()]
{apply, {M, F, A}}
restart_new_emulator

SEE ALSO

relup(4), release_handler(3), systools(3)

AUTHOR
Gunilla Hugosson - support@erlang.ericsson.se