Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Riak mam base #452

Merged
merged 45 commits into from
Oct 13, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
d9855ff
basic archive and lookup implementation
michalwski Mar 5, 2015
aa92c41
improve message lookup
michalwski Mar 5, 2015
e733ef0
message purging in Riak
michalwski Mar 5, 2015
23733b6
check size of output
michalwski Mar 5, 2015
1f77b1a
mam archive and lookup times
michalwski Mar 6, 2015
2ff0937
app desc as string
michalwski Mar 6, 2015
0e6a968
run mam_drop_message hook when write failed
michalwski Mar 13, 2015
d116c84
put msgs to weekly buckets
michalwski May 5, 2015
6784886
add test for puting mam messages into specific buckets
michalwski May 5, 2015
044aa39
fold thorugh many buckets until limit or end is reached
michalwski May 6, 2015
9c69fcf
test reading archive from many buckets
michalwski May 6, 2015
62ab210
fold over all buckets
michalwski May 6, 2015
fb174f1
correctly convert microseconds to date
michalwski May 7, 2015
439c2b0
extend mam in riak tests (read)
michalwski May 7, 2015
ff3fc51
fix jid keyfileter
michalwski May 8, 2015
ba8104b
return only requested number of messages
michalwski May 12, 2015
654debb
move mam lookup and archive metrics update to mod_mam
michalwski May 13, 2015
6180bef
measure mapred time
michalwski May 14, 2015
982a647
add mocking to riak_SUITE
michalwski May 14, 2015
4a6c85f
fetch only required messages from MAM
michalwski May 14, 2015
eb97971
MAM buckets per user
michalwski May 14, 2015
a00fbb6
fetch only required keys
michalwski May 14, 2015
56235ae
use mapred from mongoose_riak
michalwski May 14, 2015
d1d7075
fix mongoose_riak_stop and add search function to mongoose_riak
michalwski May 15, 2015
a55d773
first version of MAM with Riak search
michalwski May 15, 2015
be0e993
add riak mam search scheam
michalwski May 15, 2015
8f3d05c
improve key removing
michalwski May 18, 2015
3090ba5
rename search index and bucket type
michalwski May 18, 2015
4933567
minimize search schema
michalwski May 18, 2015
ce049a7
create search schema and index in setup script
michalwski May 18, 2015
b21705e
only riak preset on travis
michalwski May 19, 2015
439aaeb
wait for index to be created
michalwski May 19, 2015
31a5cbd
add RSM functionality
michalwski May 19, 2015
31497d1
count simple lookup queries
michalwski May 19, 2015
2facae9
remove unused function
michalwski May 22, 2015
fa19595
mod_mam_riak_timed_arch_yz code clean-up
michalwski May 22, 2015
98b356f
remove mapred based MAM riak backend
michalwski May 22, 2015
f4726e4
remove user buckets MAM implementation
michalwski May 22, 2015
bacac6d
restore other jobs on travis
michalwski May 22, 2015
58f250b
fix metrcis api
michalwski Jun 3, 2015
a18df5f
apply changes from esl/ejabberd_tests#120
michalwski Oct 8, 2015
27b2e8d
fix dialyzer errors
michalwski Oct 8, 2015
112de68
restore accidentally removed db setup on travis
michalwski Oct 9, 2015
57a59c4
[tests] improve mam_SUITE for riak stability
michalwski Oct 9, 2015
0d99f9e
[doc] Riak backend for MAM [skip ci]
michalwski Oct 12, 2015
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 15 additions & 10 deletions apps/ejabberd/src/mod_mam.erl
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,9 @@ start(Host, Opts) ->
ejabberd_hooks:add(filter_local_packet, Host, ?MODULE, filter_packet, 90),
ejabberd_hooks:add(remove_user, Host, ?MODULE, remove_user, 50),
ejabberd_hooks:add(anonymous_purge_hook, Host, ?MODULE, remove_user, 50),
mongoose_metrics:create([backends, ?MODULE, lookup], histogram),
mongoose_metrics:create([Host, modMamLookups, simple], spiral),
mongoose_metrics:create([backends, ?MODULE, archive], histogram),
ok.


Expand Down Expand Up @@ -569,20 +572,27 @@ remove_archive(Host, ArcID, ArcJID=#jid{}) ->
| {error, Reason :: term()}.
lookup_messages(Host, ArcID, ArcJID, RSM, Borders, Start, End, Now,
WithJID, PageSize, LimitPassed, MaxResultLimit, IsSimple) ->
ejabberd_hooks:run_fold(mam_lookup_messages, Host, {ok, {0, 0, []}},
StartT = os:timestamp(),
R = ejabberd_hooks:run_fold(mam_lookup_messages, Host, {ok, {0, 0, []}},
[Host, ArcID, ArcJID, RSM, Borders,
Start, End, Now, WithJID,
PageSize, LimitPassed, MaxResultLimit, IsSimple]).
PageSize, LimitPassed, MaxResultLimit, IsSimple]),
Diff = timer:now_diff(os:timestamp(), StartT),
mongoose_metrics:update([backends, ?MODULE, lookup], Diff),
R.


-spec archive_message(Host :: ejabberd:server(), MessID :: message_id(),
ArcID :: archive_id(), LocJID :: ejabberd:jid(), RemJID :: ejabberd:jid(),
SrcJID :: ejabberd:jid(), Dir :: incoming | outgoing, Packet :: term()
) -> ok | {error, timeout}.
archive_message(Host, MessID, ArcID, LocJID, RemJID, SrcJID, Dir, Packet) ->
ejabberd_hooks:run_fold(mam_archive_message, Host, ok,
[Host, MessID, ArcID, LocJID, RemJID, SrcJID, Dir, Packet]).

StartT = os:timestamp(),
R = ejabberd_hooks:run_fold(mam_archive_message, Host, ok,
[Host, MessID, ArcID, LocJID, RemJID, SrcJID, Dir, Packet]),
Diff = timer:now_diff(os:timestamp(), StartT),
mongoose_metrics:update([backends, ?MODULE, archive], Diff),
R.

-spec purge_single_message(Host :: ejabberd:server(), MessID :: message_id(),
ArcID :: archive_id(), ArcJID :: ejabberd:jid(), Now :: unix_timestamp()
Expand Down Expand Up @@ -630,11 +640,6 @@ message_row_to_ext_id({MessID,_,_}) ->
mess_id_to_external_binary(MessID).


-spec message_row_to_dump_xml(messid_jid_packet()) -> false | jlib:xmlel().
message_row_to_dump_xml(M) ->
xml:get_subtag(message_row_to_xml(M, undefined), <<"result">>).


-spec maybe_jid(binary()) -> 'error' | 'undefined' | ejabberd:jid().
maybe_jid(<<>>) ->
undefined;
Expand Down
Loading