* src/mod_private.erl: Reduce memory consumption on user private

storage removal (EJAB-299).

SVN Revision: 867
This commit is contained in:
Mickaël Rémond 2007-08-09 16:01:32 +00:00
parent 30832319df
commit 8561ba614f
2 changed files with 15 additions and 10 deletions

View File

@ -1,3 +1,8 @@
2007-08-01 Mickael Remond <mickael.remond@process-one.net>
* src/mod_private.erl: Reduce memory consumption on user private
storage removal (EJAB-299).
2007-06-29 Mickael Remond <mickael.remond@process-one.net> 2007-06-29 Mickael Remond <mickael.remond@process-one.net>
* src/ejabberd_config.erl: Normalize hostnames in config file. If mixed * src/ejabberd_config.erl: Normalize hostnames in config file. If mixed

View File

@ -107,21 +107,21 @@ get_data(LUser, LServer, [El | Els], Res) ->
get_data(LUser, LServer, Els, Res) get_data(LUser, LServer, Els, Res)
end. end.
% TODO: use mnesia:select
remove_user(User, Server) -> remove_user(User, Server) ->
LUser = jlib:nodeprep(User), LUser = jlib:nodeprep(User),
LServer = jlib:nameprep(Server), LServer = jlib:nameprep(Server),
F = fun() -> F = fun() ->
Namespaces = mnesia:select(
private_storage,
[{#private_storage{usns={LUser, LServer, '$1'},
_ = '_'},
[],
['$$']}]),
lists:foreach( lists:foreach(
fun({U, S, _} = Key) -> fun([Namespace]) ->
if mnesia:delete({private_storage,
(U == LUser) and (S == LServer) -> {LUser, LServer, Namespace}})
mnesia:delete({private_storage, Key}); end, Namespaces)
true ->
ok
end
end, mnesia:all_keys(private_storage))
end, end,
mnesia:transaction(F). mnesia:transaction(F).