diff options
author | Holger Weiss <holger@zedat.fu-berlin.de> | 2016-06-29 22:32:59 +0200 |
---|---|---|
committer | Holger Weiss <holger@zedat.fu-berlin.de> | 2016-06-29 22:32:59 +0200 |
commit | 8be1d49961088d0993d9f742642708ba5b4a7632 (patch) | |
tree | 22e76e2e213c77fc99db1444a8bffc5cbcc299c8 /src/mod_mam_mnesia.erl | |
parent | mod_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.erl | 15 |
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 |