aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_admin.erl11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/ejabberd_admin.erl b/src/ejabberd_admin.erl
index 39262f0e4..15cd78c02 100644
--- a/src/ejabberd_admin.erl
+++ b/src/ejabberd_admin.erl
@@ -54,6 +54,7 @@
dump_to_textfile/1, dump_to_textfile/2,
mnesia_change_nodename/4,
restore/1, % Still used by some modules
+ clear_cache/0,
get_commands_spec/0
]).
%% gen_server callbacks
@@ -360,7 +361,11 @@ get_commands_spec() ->
module = ?MODULE, function = install_fallback_mnesia,
args_desc = ["Full path to the fallback file"],
args_example = ["/var/lib/ejabberd/database.fallback"],
- args = [{file, string}], result = {res, restuple}}
+ args = [{file, string}], result = {res, restuple}},
+ #ejabberd_commands{name = clear_cache, tags = [server],
+ desc = "Clear database cache on all nodes",
+ module = ?MODULE, function = clear_cache,
+ args = [], result = {res, rescode}}
].
@@ -759,3 +764,7 @@ mnesia_change_nodename(FromString, ToString, Source, Target) ->
{[Other], Acc}
end,
mnesia:traverse_backup(Source, Target, Convert, switched).
+
+clear_cache() ->
+ Nodes = ejabberd_cluster:get_nodes(),
+ lists:foreach(fun(T) -> ets_cache:clear(T, Nodes) end, ets_cache:all()).