aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMickaël Rémond <mickael.remond@process-one.net>2007-08-01 09:36:30 +0000
committerMickaël Rémond <mickael.remond@process-one.net>2007-08-01 09:36:30 +0000
commita1481f27aa10551029190dc6af9ce395065e277b (patch)
treee424924125d1568c568332c45b27031cb962cb2e /src
parent* src/xml.erl: Removing debug printout. (diff)
* src/mod_private.erl: Reduce memory consumption on user private storage removal (EJAB-299).
SVN Revision: 852
Diffstat (limited to 'src')
-rw-r--r--src/mod_private.erl20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/mod_private.erl b/src/mod_private.erl
index 6b8925dda..e7361458f 100644
--- a/src/mod_private.erl
+++ b/src/mod_private.erl
@@ -107,21 +107,21 @@ get_data(LUser, LServer, [El | Els], Res) ->
get_data(LUser, LServer, Els, Res)
end.
-
-% TODO: use mnesia:select
remove_user(User, Server) ->
LUser = jlib:nodeprep(User),
LServer = jlib:nameprep(Server),
F = fun() ->
+ Namespaces = mnesia:select(
+ private_storage,
+ [{#private_storage{usns={LUser, LServer, '$1'},
+ _ = '_'},
+ [],
+ ['$$']}]),
lists:foreach(
- fun({U, S, _} = Key) ->
- if
- (U == LUser) and (S == LServer) ->
- mnesia:delete({private_storage, Key});
- true ->
- ok
- end
- end, mnesia:all_keys(private_storage))
+ fun([Namespace]) ->
+ mnesia:delete({private_storage,
+ {LUser, LServer, Namespace}})
+ end, Namespaces)
end,
mnesia:transaction(F).