chore(relup): also inject emqx_app automatically
This commit is contained in:
parent
a7791b6c58
commit
769e79e2cd
|
@ -59,32 +59,54 @@ inject_relup_instrs(Type, EmqxAppVsns, CurrRelVsn, RUs) ->
|
||||||
|
|
||||||
%% The `{apply, emqx_relup, post_release_upgrade, []}` will be appended to the end of
|
%% The `{apply, emqx_relup, post_release_upgrade, []}` will be appended to the end of
|
||||||
%% the instruction lists.
|
%% the instruction lists.
|
||||||
append_emqx_relup_instrs(up, EmqxAppVsns, CurrRelVsn, FromRelVsn, Instrs) ->
|
append_emqx_relup_instrs(up, EmqxAppVsns, CurrRelVsn, FromRelVsn, Instrs0) ->
|
||||||
{EmqxVsn, true} = maps:get(CurrRelVsn, EmqxAppVsns),
|
{EmqxVsn, true} = maps:get(CurrRelVsn, EmqxAppVsns),
|
||||||
Extra = #{}, %% we may need some extended args
|
Extra = #{}, %% we may need some extended args
|
||||||
|
LoadObjEmqxMods = {load_object_code, {emqx, EmqxVsn, [emqx_relup, emqx_app]}},
|
||||||
|
LoadCodeEmqxRelup = {load, {emqx_relup, brutal_purge, soft_purge}},
|
||||||
|
LoadCodeEmqxApp = {load, {emqx_app, brutal_purge, soft_purge}},
|
||||||
|
ApplyEmqxRelup = {apply, {emqx_relup, post_release_upgrade, [FromRelVsn, Extra]}},
|
||||||
|
Instrs1 = Instrs0 -- [LoadCodeEmqxRelup, LoadCodeEmqxApp],
|
||||||
%% we have to put 'load_object_code' before 'point_of_no_return'
|
%% we have to put 'load_object_code' before 'point_of_no_return'
|
||||||
%% so here we simply put it to the beginning
|
%% so here we simply put them to the beginning of the instruction list
|
||||||
Instrs0 = [ {load_object_code, {emqx, EmqxVsn, [emqx_relup]}}
|
Instrs2 = [ LoadObjEmqxMods
|
||||||
| Instrs],
|
| Instrs1],
|
||||||
Instrs0 ++
|
%% the `load` must be put after the 'point_of_no_return'
|
||||||
[ {load, {emqx_relup, brutal_purge, soft_purge}}
|
Instrs2 ++
|
||||||
, {apply, {emqx_relup, post_release_upgrade, [FromRelVsn, Extra]}}
|
[ LoadCodeEmqxRelup
|
||||||
|
, LoadCodeEmqxApp
|
||||||
|
, ApplyEmqxRelup
|
||||||
];
|
];
|
||||||
|
|
||||||
append_emqx_relup_instrs(down, EmqxAppVsns, _CurrRelVsn, ToRelVsn, Instrs) ->
|
append_emqx_relup_instrs(down, EmqxAppVsns, _CurrRelVsn, ToRelVsn, Instrs0) ->
|
||||||
Extra = #{}, %% we may need some extended args
|
Extra = #{}, %% we may need some extended args
|
||||||
|
ApplyEmqxRelup = {apply, {emqx_relup, post_release_downgrade, [ToRelVsn, Extra]}},
|
||||||
case maps:get(ToRelVsn, EmqxAppVsns) of
|
case maps:get(ToRelVsn, EmqxAppVsns) of
|
||||||
{EmqxVsn, true} ->
|
{EmqxVsn, true} ->
|
||||||
Instrs0 = [ {load_object_code, {emqx, EmqxVsn, [emqx_relup]}}
|
LoadObjEmqxMods = {load_object_code, {emqx, EmqxVsn, [emqx_relup, emqx_app]}},
|
||||||
| Instrs],
|
LoadCodeEmqxRelup = {load, {emqx_relup, brutal_purge, soft_purge}},
|
||||||
Instrs0 ++
|
LoadCodeEmqxApp = {load, {emqx_app, brutal_purge, soft_purge}},
|
||||||
[ {apply, {emqx_relup, post_release_downgrade, [ToRelVsn, Extra]}}
|
Instrs1 = Instrs0 -- [LoadCodeEmqxRelup, LoadCodeEmqxApp, ApplyEmqxRelup],
|
||||||
, {load, {emqx_relup, brutal_purge, soft_purge}}
|
Instrs2 = [ LoadObjEmqxMods
|
||||||
|
| Instrs1],
|
||||||
|
%% NOTE: We apply emqx_relup:post_release_downgrade/2 first, and then reload
|
||||||
|
%% the old vsn code of emqx_relup.
|
||||||
|
Instrs2 ++
|
||||||
|
[ LoadCodeEmqxApp
|
||||||
|
, ApplyEmqxRelup
|
||||||
|
, LoadCodeEmqxRelup
|
||||||
];
|
];
|
||||||
{_EmqxVsn, false} ->
|
{EmqxVsn, false} ->
|
||||||
Instrs ++
|
LoadObjEmqxApp = {load_object_code, {emqx, EmqxVsn, [emqx_app]}},
|
||||||
[ {apply, {emqx_relup, post_release_downgrade, [ToRelVsn, Extra]}}
|
LoadCodeEmqxApp = {load, {emqx_app, brutal_purge, soft_purge}},
|
||||||
, {remove, {emqx_relup, brutal_purge, soft_purge}}
|
RemoveCodeEmqxRelup = {remove, {emqx_relup, brutal_purge, soft_purge}},
|
||||||
|
Instrs1 = Instrs0 -- [LoadCodeEmqxApp, RemoveCodeEmqxRelup, ApplyEmqxRelup],
|
||||||
|
Instrs2 = [ LoadObjEmqxApp
|
||||||
|
| Instrs1],
|
||||||
|
Instrs2 ++
|
||||||
|
[ LoadCodeEmqxApp
|
||||||
|
, ApplyEmqxRelup
|
||||||
|
, RemoveCodeEmqxRelup
|
||||||
]
|
]
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue