Skip to content
This repository has been archived by the owner on Sep 27, 2023. It is now read-only.

Commit

Permalink
Added a upgrade script for v69 (shard
Browse files Browse the repository at this point in the history
replacements)
  • Loading branch information
omarkj committed Jun 26, 2013
1 parent f5cabf6 commit 064271c
Showing 1 changed file with 51 additions and 0 deletions.
51 changes: 51 additions & 0 deletions upgrades/v68_v69/live_upgrade.erl
@@ -0,0 +1,51 @@
f(UpgradeNode).
UpgradeNode = fun () ->
case logplex_app:config(git_branch) of
"v68" ->
io:format(whereis(user), "at=upgrade_start cur_vsn=68~n", []);
"v69" ->
io:format(whereis(user),
"at=upgrade type=retry cur_vsn=68 old_vsn=69~n", []);
Else ->
io:format(whereis(user),
"at=upgrade_start old_vsn=~p abort=wrong_version", [tl(Else)]),
erlang:error({wrong_version, Else})
end,

%% stateless
l(logplex_shard),

application:set_env(logplex, git_branch, "v69"),
ok
end.

f(NodeVersions).
NodeVersions = fun () ->
lists:keysort(3,
[ {N,
element(2, rpc:call(N, application, get_env, [logplex, git_branch])),
rpc:call(N, os, getenv, ["INSTANCE_NAME"])}
|| N <- [node() | nodes()] ])
end.

f(NodesAt).
NodesAt = fun (Vsn) ->
[ N || {N, V, _} <- NodeVersions(), V =:= Vsn ]
end.


f(RollingUpgrade).
RollingUpgrade = fun (Nodes) ->
lists:foldl(fun (N, {good, Upgraded}) ->
case rpc:call(N, erlang, apply, [ UpgradeNode, [] ]) of
ok ->
{good, [N | Upgraded]};
Else ->
{{bad, N, Else}, Upgraded}
end;
(N, {_, _} = Acc) -> Acc
end,
{good, []},
Nodes)
end.

0 comments on commit 064271c

Please sign in to comment.