From 3d9a5a1635ff75e40ef676ce75a705ec5c6fec55 Mon Sep 17 00:00:00 2001 From: Holger Weiss Date: Sat, 14 Sep 2024 21:54:01 +0200 Subject: [PATCH] Fix 'update' command output So far, ejabberd_update:update/0 returned the return value of release_handler_1:eval_script/1. That function returns the list of updated but unpurged modules, i.e., modules where one or more processes are still running an old version of the code. Since commit 5a34020d23f455f80a144bcb0d8ee94770c0dbb1, the ejabberd 'update' command assumes that value to be the list of updated modules instead. As that seems more useful, modify ejabberd_update:update/0 accordingly. This fixes the 'update' command output. --- src/ejabberd_admin.erl | 2 +- src/ejabberd_update.erl | 34 +++++++++++++++++++++------------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/src/ejabberd_admin.erl b/src/ejabberd_admin.erl index 37d5e622fd1..7d55ce33e86 100644 --- a/src/ejabberd_admin.erl +++ b/src/ejabberd_admin.erl @@ -746,7 +746,7 @@ update_module(ModuleNameString) -> case ejabberd_update:update([ModuleName]) of {ok, []} -> {ok, "Not updated: "++ModuleNameString}; - {ok, [{ModuleName, _}]} -> + {ok, [ModuleName]} -> {ok, "Updated: "++ModuleNameString}; {error, Reason} -> {error, Reason} end. diff --git a/src/ejabberd_update.erl b/src/ejabberd_update.erl index c9cbd906e55..17f4717dc89 100644 --- a/src/ejabberd_update.erl +++ b/src/ejabberd_update.erl @@ -38,13 +38,17 @@ %% Update all the modified modules update() -> case update_info() of - {ok, Dir, _UpdatedBeams, _Script, LowLevelScript, _Check} -> - Eval = - eval_script( - LowLevelScript, [], - [{ejabberd, "", filename:join(Dir, "..")}]), - ?DEBUG("Eval: ~p~n", [Eval]), - Eval; + {ok, Dir, UpdatedBeams, _Script, LowLevelScript, _Check} -> + case eval_script( + LowLevelScript, [], + [{ejabberd, "", filename:join(Dir, "..")}]) of + {ok, _} -> + ?DEBUG("Updated: ~p~n", [UpdatedBeams]), + {ok, UpdatedBeams}; + Eval -> + ?DEBUG("Eval: ~p~n", [Eval]), + Eval + end; {error, Reason} -> {error, Reason} end. @@ -56,12 +60,16 @@ update(ModulesToUpdate) -> UpdatedBeamsNow = [A || A <- UpdatedBeamsAll, B <- ModulesToUpdate, A == B], {_, LowLevelScript, _} = build_script(Dir, UpdatedBeamsNow), - Eval = - eval_script( - LowLevelScript, [], - [{ejabberd, "", filename:join(Dir, "..")}]), - ?DEBUG("Eval: ~p~n", [Eval]), - Eval; + case eval_script( + LowLevelScript, [], + [{ejabberd, "", filename:join(Dir, "..")}]) of + {ok, _} -> + ?DEBUG("Updated: ~p~n", [UpdatedBeamsNow]), + {ok, UpdatedBeamsNow}; + Eval -> + ?DEBUG("Eval: ~p~n", [Eval]), + Eval + end; {error, Reason} -> {error, Reason} end.