From 452cd8191f4b9b5d0632ae626d079dc9b7ce2584 Mon Sep 17 00:00:00 2001 From: Ulf Wiger Date: Mon, 20 Apr 2020 09:36:45 +0200 Subject: [PATCH] more thorough cleanup during disable() --- apps/roster/src/roster_oam.erl | 35 ++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/apps/roster/src/roster_oam.erl b/apps/roster/src/roster_oam.erl index b2cba638a..9ba81e731 100644 --- a/apps/roster/src/roster_oam.erl +++ b/apps/roster/src/roster_oam.erl @@ -11,7 +11,7 @@ node_running() -> lists:keymember(roster, 1, application:which_applications()). disable() -> - [application:stop(A) || A <- apps_to_stop()], + [stop_app(A) || A <- apps_to_stop()], ok. revert_db_sync(DelNode) -> @@ -23,7 +23,7 @@ revert_db_sync(DelNode) -> {error, {still_running, DelNode}}; false -> mnesia:set_master_nodes(mnesia:system_info(db_nodes) -- [DelNode]), - [application:stop(A) || A <- lists:reverse(apps_to_restart())], + [stop_app(A) || A <- lists:reverse(apps_to_restart())], remove_replicas(DelNode), application:start(mnesia, permanent), ok = ensure_tables_loaded(), @@ -32,16 +32,32 @@ revert_db_sync(DelNode) -> ok end. +stop_app(n2o) -> + catch roster:stop_vnodes(), + application:stop(n2o); +stop_app(A) -> + application:stop(A). + apps_to_stop() -> - lists:takewhile(fun(A) -> - A =/= mnesia - end, lists:reverse(applist())). + Apps = lists:takewhile(fun(A) -> + A =/= mnesia + end, lists:reverse(applist())), + no_dups(Apps ++ lists:reverse(extra_apps())). apps_to_restart() -> - [mnesia|Rest] = lists:dropwhile(fun(A) -> - A =/= mnesia - end, applist()), - Rest. + [Rest] = lists:dropwhile(fun(A) -> + A =/= mnesia + end, applist()), + no_dups(extra_apps() ++ Rest). + +no_dups([H | T]) -> + [H | no_dups([A || A <- T, + A =/= H])]; +no_dups([]) -> + []. + +extra_apps() -> + [n2o, ibrowse, prometheus, fs, bert]. applist() -> TopDir = filename:dirname(mnesia:system_info(directory)), @@ -80,4 +96,3 @@ remove_replicas(DelNode) -> tabs() -> mnesia:system_info(tables) -- [schema]. - -- GitLab