aboutsummaryrefslogtreecommitdiff
path: root/src/mod_mam_mnesia.erl
diff options
context:
space:
mode:
authorHolger Weiss <holger@zedat.fu-berlin.de>2016-06-29 22:32:59 +0200
committerHolger Weiss <holger@zedat.fu-berlin.de>2016-06-29 22:32:59 +0200
commit8be1d49961088d0993d9f742642708ba5b4a7632 (patch)
tree22e76e2e213c77fc99db1444a8bffc5cbcc299c8 /src/mod_mam_mnesia.erl
parentmod_client_state: Throttle PEP stanzas by default (diff)
mod_mam_mnesia: Force garbage collection
The VM fails to collect the garbage generated during MAM lookups automatically, so mod_mam_mnesia's memory usage easily goes up to several gigabytes if we don't force garbage collection.
Diffstat (limited to 'src/mod_mam_mnesia.erl')
-rw-r--r--src/mod_mam_mnesia.erl15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/mod_mam_mnesia.erl b/src/mod_mam_mnesia.erl
index 2463690fd..be14d0fff 100644
--- a/src/mod_mam_mnesia.erl
+++ b/src/mod_mam_mnesia.erl
@@ -138,12 +138,15 @@ select(_LServer, JidRequestor,
SortedMsgs = lists:keysort(#archive_msg.timestamp, Msgs),
{FilteredMsgs, IsComplete} = filter_by_rsm(SortedMsgs, RSM),
Count = length(Msgs),
- {lists:map(
- fun(Msg) ->
- {Msg#archive_msg.id,
- jlib:binary_to_integer(Msg#archive_msg.id),
- mod_mam:msg_to_el(Msg, MsgType, JidRequestor, JidArchive)}
- end, FilteredMsgs), IsComplete, Count}.
+ Result = {lists:map(
+ fun(Msg) ->
+ {Msg#archive_msg.id,
+ jlib:binary_to_integer(Msg#archive_msg.id),
+ mod_mam:msg_to_el(Msg, MsgType, JidRequestor,
+ JidArchive)}
+ end, FilteredMsgs), IsComplete, Count},
+ erlang:garbage_collect(),
+ Result.
%%%===================================================================
%%% Internal functions