edeliver v1.2.6 Edeliver.Relup.Instructions.CheckRanchAcceptors
This upgrade instruction checks whether the ranch acceptors can be found.
This instruction will cause the upgrade to be canceled if the ranch acceptors cannot be found and because it is insterted before the “point of no return” it will run twice, once when checking the relup and once when executing the relup.
Summary
Functions
Returns the name of the application
Calls the run/1 function of this module
Logs a debug message using the Logger on the running node which is upgraded
Callback implementation for Edeliver.Relup.RunnableInstruction.dependencies/0
Returns the pid of the phoenix endpoint supervisor
Ensures that all Edeliver.Relup.RunnableInstruction modules used / referenced by this instruction
and returned by the dependencies/0 callback are loaded before this instruction is executed
during the upgrade
Ensures that all Edeliver.Relup.RunnableInstruction modules used / referenced by this instruction
and returned by the dependencies/0 callback are unloaded after this instruction is executed
during the downgrade
Logs an error using the Logger on the running node which is upgraded
Formats and prints the message on the node
Logs an info message using the Logger on the running node which is upgraded
Inserts the instruction before the point of no return
Logs the message of the given type on the node
Callback implementation for Edeliver.Relup.Instruction.modify_relup/2
Gets the supervisor child ids of the ranch socket accecptors
Gets the pid of the supervisor which supervises the ranch socket acceptors
Gets the pid of the ranch listener supervisor
Checks whether the ranch acceptors can be found
Logs a warning using the Logger on the running node which is upgraded
Macros
Assumes that the pattern matches or throws an error with the given error message
Types
insert_fun :: (%Edeliver.Relup.Instructions{changed_modules: term, down_instructions: term, down_version: term, up_instructions: term, up_version: term} | instructions, new_instructions :: instruction | instructions -> updated_instructions :: %Edeliver.Relup.Instructions{changed_modules: term, down_instructions: term, down_version: term, up_instructions: term, up_version: term} | instructions)
instruction :: :relup.instruction
instructions :: [instruction]
Functions
Specs
arguments(%Edeliver.Relup.Instructions{changed_modules: term, down_instructions: term, down_version: term, up_instructions: term, up_version: term}, %ReleaseManager.Config{dev: term, env: term, erl: term, name: term, package: term, relx_config: term, upgrade?: term, verbosity: term, version: term}) :: term
Returns the name of the application.
This name is taken as argument for the run/1 function and is required to
access the acceptor processes through the supervision tree
Specs
call_this(arguments :: [term]) ::
instruction |
instructions
Calls the run/1 function of this module
from the relup file during hot code upgrade
Specs
debug(message :: String.t) :: no_return
Logs a debug message using the Logger on the running node which is upgraded.
In addition the same debug message is logged on the node which executes
the upgrade and is displayed as output of the
$APP/bin/$APP upgarde $RELEASE command.
Specs
dependencies :: [instruction_module :: atom]
Callback implementation for Edeliver.Relup.RunnableInstruction.dependencies/0.
Specs
endpoint(otp_application_name :: atom) :: pid
Returns the pid of the phoenix endpoint supervisor
or throws and logs an error if it cannot be found. It supervises the
Phoenix.Endpoint.Server which supervises the connections and acceptors,
Phoenix.Config and the phoenix pubsub supervisor, e.g. Phoenix.PubSub.PG2.
Specs
ensure_dependencies_loaded_before_instruction_for_upgrade(instructions :: %Edeliver.Relup.Instructions{changed_modules: term, down_instructions: term, down_version: term, up_instructions: term, up_version: term}, runnable_instruction :: {:apply, {module :: atom, :run, arguments :: [term]}}, dependencies :: [instruction_module :: atom]) :: %Edeliver.Relup.Instructions{changed_modules: term, down_instructions: term, down_version: term, up_instructions: term, up_version: term}
Ensures that all Edeliver.Relup.RunnableInstruction modules used / referenced by this instruction
and returned by the dependencies/0 callback are loaded before this instruction is executed
during the upgrade.
Specs
ensure_dependencies_unloaded_after_instruction_for_downgrade(instructions :: %Edeliver.Relup.Instructions{changed_modules: term, down_instructions: term, down_version: term, up_instructions: term, up_version: term}, runnable_instruction :: {:apply, {module :: atom, :run, arguments :: [term]}}, dependencies :: [instruction_module :: atom]) :: %Edeliver.Relup.Instructions{changed_modules: term, down_instructions: term, down_version: term, up_instructions: term, up_version: term}
Ensures that all Edeliver.Relup.RunnableInstruction modules used / referenced by this instruction
and returned by the dependencies/0 callback are unloaded after this instruction is executed
during the downgrade.
Specs
error(message :: String.t) :: no_return
Logs an error using the Logger on the running node which is upgraded.
In addition the same error message is logged on the node which executes
the upgrade and is displayed as output of the
$APP/bin/$APP upgarde $RELEASE command.
Specs
format_in_upgrade_script(format :: char_list, arguments :: [term]) :: no_return
Formats and prints the message on the node
running the upgrade script which was started by the
$APP/bin/$APP upgrade $RELEASE command.
Specs
info(message :: String.t) :: no_return
Logs an info message using the Logger on the running node which is upgraded.
In addition the same info message is logged on the node which executes
the upgrade and is displayed as output of the
$APP/bin/$APP upgarde $RELEASE command.
Specs
insert_where :: insert_fun
Inserts the instruction before the point of no return.
This causes the release handler to abort the upgrade
already when running :release_handler.check_install_release/1
if this instruction fails.
Specs
log_in_upgrade_script(type :: :error | :warning | :info | :debug, message :: String.t) :: no_return
Logs the message of the given type on the node
which executes the upgrade and displays it as output of
the $APP/bin/$APP upgrade $RELEASE command. The message is
prefixed with a string derived from the message type.
Callback implementation for Edeliver.Relup.Instruction.modify_relup/2.
Specs
ranch_acceptors(ranch_acceptors_sup :: pid) :: [:supervisor.child_id]
Gets the supervisor child ids of the ranch socket accecptors
(ranch_acceptor) from the ranch acceptor supervisor or throws
and logs an error if the acceptors cannot be found.
Specs
ranch_acceptors_sup(ranch_listener_sup :: pid) :: pid
Gets the pid of the supervisor which supervises the ranch socket acceptors.
If it cannot be found as child of the given ranch listener supervisor it throws and logs an error.
Specs
ranch_listener_sup(otp_application_name :: atom) :: pid
Gets the pid of the ranch listener supervisor
(:ranch_listener_sup) which supervises the ranch acceptors supervisor
(:ranch_acceptors_sup) and the connections supervisor (:ranch_conns_sup).
It throws and logs an error if they cannot be found in the supervison
tree of the application.
Specs
run(otp_application_name :: atom) :: :ok
Checks whether the ranch acceptors can be found.
If not the upgrade will be canceled. This function runs twice because it is executed before the “point of no return”, once when checking the relup and once when executing the relup.
Specs
warn(message :: String.t) :: no_return
Logs a warning using the Logger on the running node which is upgraded.
In addition the same warning message is logged on the node which executes
the upgrade and is displayed as output of the
$APP/bin/$APP upgarde $RELEASE command.
Macros
Assumes that the pattern matches or throws an error with the given error message.
The error message is logged as error to the logfile
using the Logger and displayed as error output by the
$APP/bin/$APP upgrade $RELEASE task using the
$APP/ebin/install_upgrade.escript script. If the pattern matches
the variables from the matching are assigned.