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

mod_private without dynamic modules #3323

Merged
merged 9 commits into from
Oct 13, 2021

Conversation

arcusfelis
Copy link
Contributor

@arcusfelis arcusfelis commented Oct 6, 2021

This PR addresses "MIM-1359 Get rid of dynamically compiled modules - POC"

Proposed changes include:

  • a backend module
  • some helpers

@codecov
Copy link

codecov bot commented Oct 6, 2021

Codecov Report

Merging #3323 (ecf2183) into without-dynamic-backend-modules (ba8bc97) will increase coverage by 0.07%.
The diff coverage is 100.00%.

Impacted file tree graph

@@                         Coverage Diff                         @@
##           without-dynamic-backend-modules    #3323      +/-   ##
===================================================================
+ Coverage                            80.69%   80.76%   +0.07%     
===================================================================
  Files                                  397      399       +2     
  Lines                                32434    32472      +38     
===================================================================
+ Hits                                 26171    26227      +56     
+ Misses                                6263     6245      -18     
Impacted Files Coverage Δ
src/mod_private.erl 83.05% <ø> (-0.29%) ⬇️
src/mod_private_mnesia.erl 92.30% <ø> (ø)
src/mod_private_rdbms.erl 93.10% <ø> (ø)
src/mod_private_riak.erl 91.66% <ø> (ø)
src/backend_module.erl 97.14% <100.00%> (-0.30%) ⬇️
src/gen_mod.erl 74.05% <100.00%> (+0.50%) ⬆️
src/mod_private_backend.erl 100.00% <100.00%> (ø)
src/mongoose_backend.erl 100.00% <100.00%> (ø)
src/mongoose_tcp_listener.erl 76.59% <0.00%> (-4.26%) ⬇️
src/mam/mod_mam_rdbms_async_pool_writer.erl 66.66% <0.00%> (-3.93%) ⬇️
... and 10 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update ba8bc97...ecf2183. Read the comment docs.

@mongoose-im
Copy link
Collaborator

mongoose-im commented Oct 6, 2021

small_tests_24 / small_tests / 07db703
Reports root / small


internal_mnesia_24 / internal_mnesia / 07db703
Reports root/ big
OK: 1589 / Failed: 0 / User-skipped: 297 / Auto-skipped: 0


small_tests_23 / small_tests / 07db703
Reports root / small


dynamic_domains_pgsql_mnesia_24 / pgsql_mnesia / 07db703
Reports root/ big
OK: 2701 / Failed: 1 / User-skipped: 184 / Auto-skipped: 0

domain_removal_SUITE:private_removal:private_removal
{error,{test_case_failed,"assert_equal_extra(<< >>, Val2)\n\tExpected <<>>\n\tValue <<\"banana\">>\n\tstanza = {xmlel,<<\"iq\">>,\n           [{<<\"from\">>,\n             <<\"[email protected]\">>},\n            {<<\"to\">>,\n             <<\"[email protected]/res1\">>},\n            {<<\"id\">>,<<\"f1c3c1eeb72df1febc92cc6a902e754e\">>},\n            {<<\"type\">>,<<\"result\">>}],\n           [{xmlel,<<\"query\">>,\n              [{<<\"xmlns\">>,<<\"jabber:iq:private\">>}],\n              [{xmlel,<<\"my_element\">>,\n                 [{<<\"xmlns\">>,<<\"alice:private:ns\">>}],\n                 [{xmlcdata,<<\"banana\">>}]}]}]}\n"}}

Report log


dynamic_domains_pgsql_mnesia_23 / pgsql_mnesia / 07db703
Reports root/ big
OK: 2701 / Failed: 1 / User-skipped: 184 / Auto-skipped: 0

domain_removal_SUITE:private_removal:private_removal
{error,{test_case_failed,"assert_equal_extra(<< >>, Val2)\n\tExpected <<>>\n\tValue <<\"banana\">>\n\tstanza = {xmlel,<<\"iq\">>,\n           [{<<\"from\">>,\n             <<\"[email protected]\">>},\n            {<<\"to\">>,\n             <<\"[email protected]/res1\">>},\n            {<<\"id\">>,<<\"1bd3d9227990152cc3d408290f6cd323\">>},\n            {<<\"type\">>,<<\"result\">>}],\n           [{xmlel,<<\"query\">>,\n              [{<<\"xmlns\">>,<<\"jabber:iq:private\">>}],\n              [{xmlel,<<\"my_element\">>,\n                 [{<<\"xmlns\">>,<<\"alice:private:ns\">>}],\n                 [{xmlcdata,<<\"banana\">>}]}]}]}\n"}}

Report log


dynamic_domains_mysql_redis_24 / mysql_redis / 07db703
Reports root/ big
OK: 2684 / Failed: 1 / User-skipped: 201 / Auto-skipped: 0

domain_removal_SUITE:private_removal:private_removal
{error,{test_case_failed,"assert_equal_extra(<< >>, Val2)\n\tExpected <<>>\n\tValue <<\"banana\">>\n\tstanza = {xmlel,<<\"iq\">>,\n           [{<<\"from\">>,\n             <<\"[email protected]\">>},\n            {<<\"to\">>,\n             <<\"[email protected]/res1\">>},\n            {<<\"id\">>,<<\"d6b98b7b616334aec2cd1c4f2b13b692\">>},\n            {<<\"type\">>,<<\"result\">>}],\n           [{xmlel,<<\"query\">>,\n              [{<<\"xmlns\">>,<<\"jabber:iq:private\">>}],\n              [{xmlel,<<\"my_element\">>,\n                 [{<<\"xmlns\">>,<<\"alice:private:ns\">>}],\n                 [{xmlcdata,<<\"banana\">>}]}]}]}\n"}}

Report log


ldap_mnesia_23 / ldap_mnesia / 07db703
Reports root/ big
OK: 1486 / Failed: 0 / User-skipped: 400 / Auto-skipped: 0


dynamic_domains_mssql_mnesia_24 / odbc_mssql_mnesia / 07db703
Reports root/ big
OK: 2701 / Failed: 1 / User-skipped: 184 / Auto-skipped: 0

domain_removal_SUITE:private_removal:private_removal
{error,{test_case_failed,"assert_equal_extra(<< >>, Val2)\n\tExpected <<>>\n\tValue <<\"banana\">>\n\tstanza = {xmlel,<<\"iq\">>,\n           [{<<\"from\">>,\n             <<\"[email protected]\">>},\n            {<<\"to\">>,\n             <<\"[email protected]/res1\">>},\n            {<<\"id\">>,<<\"8c7bc43640d4363ca890dd1b161cff23\">>},\n            {<<\"type\">>,<<\"result\">>}],\n           [{xmlel,<<\"query\">>,\n              [{<<\"xmlns\">>,<<\"jabber:iq:private\">>}],\n              [{xmlel,<<\"my_element\">>,\n                 [{<<\"xmlns\">>,<<\"alice:private:ns\">>}],\n                 [{xmlcdata,<<\"banana\">>}]}]}]}\n"}}

Report log


ldap_mnesia_24 / ldap_mnesia / 07db703
Reports root/ big
OK: 1486 / Failed: 0 / User-skipped: 400 / Auto-skipped: 0


pgsql_mnesia_23 / pgsql_mnesia / 07db703
Reports root/ big
OK: 3070 / Failed: 1 / User-skipped: 211 / Auto-skipped: 0

domain_removal_SUITE:private_removal:private_removal
{error,{test_case_failed,"assert_equal_extra(<< >>, Val2)\n\tExpected <<>>\n\tValue <<\"banana\">>\n\tstanza = {xmlel,<<\"iq\">>,\n           [{<<\"from\">>,\n             <<\"alicE_private_removal_87.130667@localhost\">>},\n            {<<\"to\">>,\n             <<\"alicE_private_removal_87.130667@localhost/res1\">>},\n            {<<\"id\">>,<<\"611b336c5538d852070c01fad7f87248\">>},\n            {<<\"type\">>,<<\"result\">>}],\n           [{xmlel,<<\"query\">>,\n              [{<<\"xmlns\">>,<<\"jabber:iq:private\">>}],\n              [{xmlel,<<\"my_element\">>,\n                 [{<<\"xmlns\">>,<<\"alice:private:ns\">>}],\n                 [{xmlcdata,<<\"banana\">>}]}]}]}\n"}}

Report log


pgsql_mnesia_24 / pgsql_mnesia / 07db703
Reports root/ big
OK: 3070 / Failed: 1 / User-skipped: 211 / Auto-skipped: 0

domain_removal_SUITE:private_removal:private_removal
{error,{test_case_failed,"assert_equal_extra(<< >>, Val2)\n\tExpected <<>>\n\tValue <<\"banana\">>\n\tstanza = {xmlel,<<\"iq\">>,\n           [{<<\"from\">>,\n             <<\"alicE_private_removal_2.265201@localhost\">>},\n            {<<\"to\">>,\n             <<\"alicE_private_removal_2.265201@localhost/res1\">>},\n            {<<\"id\">>,<<\"dcc1a0d2f0874fe437cc65aeec977f90\">>},\n            {<<\"type\">>,<<\"result\">>}],\n           [{xmlel,<<\"query\">>,\n              [{<<\"xmlns\">>,<<\"jabber:iq:private\">>}],\n              [{xmlel,<<\"my_element\">>,\n                 [{<<\"xmlns\">>,<<\"alice:private:ns\">>}],\n                 [{xmlcdata,<<\"banana\">>}]}]}]}\n"}}

Report log


mssql_mnesia_24 / odbc_mssql_mnesia / 07db703
Reports root/ big
OK: 3069 / Failed: 2 / User-skipped: 211 / Auto-skipped: 0

service_domain_db_SUITE:db:db_keeps_syncing_after_cluster_join
{error,{test_case_failed,{[<<"example1.com">>,<<"example2.com">>,
               <<"example3.com">>],
              [<<"example1.com">>,<<"example2.com">>,
               <<"example3.com">>,<<"example4.com">>]}}}

Report log

domain_removal_SUITE:private_removal:private_removal
{error,{test_case_failed,"assert_equal_extra(<< >>, Val2)\n\tExpected <<>>\n\tValue <<\"banana\">>\n\tstanza = {xmlel,<<\"iq\">>,\n           [{<<\"from\">>,\n             <<\"alicE_private_removal_18.308091@localhost\">>},\n            {<<\"to\">>,\n             <<\"alicE_private_removal_18.308091@localhost/res1\">>},\n            {<<\"id\">>,<<\"31d1396dcceeedb9b0d96923b74258a3\">>},\n            {<<\"type\">>,<<\"result\">>}],\n           [{xmlel,<<\"query\">>,\n              [{<<\"xmlns\">>,<<\"jabber:iq:private\">>}],\n              [{xmlel,<<\"my_element\">>,\n                 [{<<\"xmlns\">>,<<\"alice:private:ns\">>}],\n                 [{xmlcdata,<<\"banana\">>}]}]}]}\n"}}

Report log


elasticsearch_and_cassandra_24 / elasticsearch_and_cassandra_mnesia / 07db703
Reports root/ big
OK: 1862 / Failed: 0 / User-skipped: 323 / Auto-skipped: 0


mysql_redis_24 / mysql_redis / 07db703
Reports root/ big
OK: 3053 / Failed: 1 / User-skipped: 228 / Auto-skipped: 0

domain_removal_SUITE:private_removal:private_removal
{error,{test_case_failed,"assert_equal_extra(<< >>, Val2)\n\tExpected <<>>\n\tValue <<\"banana\">>\n\tstanza = {xmlel,<<\"iq\">>,\n           [{<<\"from\">>,\n             <<\"alicE_private_removal_90.544560@localhost\">>},\n            {<<\"to\">>,\n             <<\"alicE_private_removal_90.544560@localhost/res1\">>},\n            {<<\"id\">>,<<\"2ee10edfead16ba7cdfe64b6a0374f26\">>},\n            {<<\"type\">>,<<\"result\">>}],\n           [{xmlel,<<\"query\">>,\n              [{<<\"xmlns\">>,<<\"jabber:iq:private\">>}],\n              [{xmlel,<<\"my_element\">>,\n                 [{<<\"xmlns\">>,<<\"alice:private:ns\">>}],\n                 [{xmlcdata,<<\"banana\">>}]}]}]}\n"}}

Report log


riak_mnesia_24 / riak_mnesia / 07db703
Reports root/ big
OK: 1709 / Failed: 0 / User-skipped: 326 / Auto-skipped: 0

@mongoose-im
Copy link
Collaborator

mongoose-im commented Oct 6, 2021

small_tests_24 / small_tests / df8ef72
Reports root / small


internal_mnesia_24 / internal_mnesia / df8ef72
Reports root/ big
OK: 1589 / Failed: 0 / User-skipped: 297 / Auto-skipped: 0


small_tests_23 / small_tests / df8ef72
Reports root / small


dynamic_domains_pgsql_mnesia_24 / pgsql_mnesia / df8ef72
Reports root/ big
OK: 2702 / Failed: 0 / User-skipped: 184 / Auto-skipped: 0


dynamic_domains_mysql_redis_24 / mysql_redis / df8ef72
Reports root/ big
OK: 2685 / Failed: 0 / User-skipped: 201 / Auto-skipped: 0


ldap_mnesia_24 / ldap_mnesia / df8ef72
Reports root/ big
OK: 1486 / Failed: 0 / User-skipped: 400 / Auto-skipped: 0


dynamic_domains_pgsql_mnesia_23 / pgsql_mnesia / df8ef72
Reports root/ big
OK: 2702 / Failed: 0 / User-skipped: 184 / Auto-skipped: 0


dynamic_domains_mssql_mnesia_24 / odbc_mssql_mnesia / df8ef72
Reports root/ big
OK: 2702 / Failed: 0 / User-skipped: 184 / Auto-skipped: 0


pgsql_mnesia_24 / pgsql_mnesia / df8ef72
Reports root/ big
OK: 3071 / Failed: 0 / User-skipped: 211 / Auto-skipped: 0


elasticsearch_and_cassandra_24 / elasticsearch_and_cassandra_mnesia / df8ef72
Reports root/ big
OK: 1862 / Failed: 0 / User-skipped: 323 / Auto-skipped: 0


ldap_mnesia_23 / ldap_mnesia / df8ef72
Reports root/ big
OK: 1486 / Failed: 0 / User-skipped: 400 / Auto-skipped: 0


mysql_redis_24 / mysql_redis / df8ef72
Reports root/ big
OK: 3054 / Failed: 0 / User-skipped: 228 / Auto-skipped: 0


mssql_mnesia_24 / odbc_mssql_mnesia / df8ef72
Reports root/ big
OK: 3089 / Failed: 1 / User-skipped: 211 / Auto-skipped: 0

jingle_SUITE:all:resp_4xx_from_sip_proxy_results_in_session_terminate
{error,
  {{assertion_failed,assert,is_iq_result,
     {xmlel,<<"iq">>,
       [{<<"from">>,<<"error.480@localhost">>},
        {<<"to">>,
         <<"alice_resp_4xx_from_sip_proxy_results_in_session_terminate_17.936775@localhost/res1">>},
        {<<"id">>,<<"c85d8b76-051e-48e5-a743-dfaf29fe083f">>},
        {<<"type">>,<<"set">>}],
       [{xmlel,<<"jingle">>,
          [{<<"xmlns">>,<<"urn:xmpp:jingle:1">>},
           {<<"action">>,<<"session-terminate">>},
           {<<"sid">>,<<"1dc8a2fa-034c-4e57-998a-efc2b01c59f0">>}],
          [{xmlel,<<"reason">>,[],
             [{xmlel,<<"general-error">>,[],[]},
            {xmlel,<<"sip-error">>,
              [{<<"code">>,<<"480">>}],
              [{xmlcdata,<<"Temporarily Unavailable">>}]}]}]}]},
     "<iq from='error.480@localhost' to='alice_resp_4xx_from_sip_proxy_results_in_session_terminate_17.936775@localhost/res1' id='c85d8b76-051e-48e5-a743-dfaf29fe083f' type='set'><jingle xmlns='urn:xmpp:jingle:1' action='session-terminate' sid='1dc8a2fa-034c-4e57-998a-efc2b01c59f0'><reason><general-error/><sip-error code='480'>Temporarily Unavailable</sip-error></reason></jingle></iq>"},
   [{escalus_new_assert,assert_true,2,
      [{file,
         "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_new_assert.erl"},
       {line,84}]},
    {jingle_SUITE,send_initiate_and_wait_for_first_iq_set,2,
      [{file,"/home/circleci/app/big_tests/tests/jingle_SUITE.erl"},
       {line,395}]},
    {jingle_SUITE,
      '-res...

Report log


pgsql_mnesia_23 / pgsql_mnesia / df8ef72
Reports root/ big
OK: 3071 / Failed: 0 / User-skipped: 211 / Auto-skipped: 0


riak_mnesia_24 / riak_mnesia / df8ef72
Reports root/ big
OK: 1709 / Failed: 0 / User-skipped: 326 / Auto-skipped: 0

Copy link
Member

@chrzaszcz chrzaszcz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me. I think we could proceed with other modules.

Copy link
Collaborator

@NelsonVides NelsonVides left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Honestly I don't see this ready to be merged at all, but I don't want to block it either 😕

src/mod_private_backend.erl Outdated Show resolved Hide resolved
src/mod_private_backend.erl Show resolved Hide resolved

call(HostType, Module, Op, Args) ->
Backend = gen_mod:get_backend_module(HostType, Module),
erlang:apply(Backend, Op, Args).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is unfortunately the most expensive way to call functions in erlang https://erlang.org/doc/efficiency_guide/functions.html#function-calls
That's precisely why @DenysGonchar made the effort for hooks to register properly performant callbacks

check_hook_function(Function) when is_function(Function, 3) ->

Copy link
Member

@chrzaszcz chrzaszcz Oct 8, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code you mentioned above is using erlang:apply so it is not more performant.

I think the point or this PR is to have a simple baseline. I don't think it will be noticeably slower (the metrics are very slow compared to any erlang:apply). Let's keep this in a feature branch then if we are unsure about performance and merge only when we load test it.

We could optimize this code later and the module code could stay as it is.

Copy link
Collaborator

@DenysGonchar DenysGonchar Oct 8, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

with the hook we have just one handler function, but backend is a behavior implementation module. I'm not sure if we can make it somehow differently here, and in the end it's done in the same way in OTP.

Copy link
Member

@chrzaszcz chrzaszcz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please change this PR's destination to a feature branch in which we will eliminate the dynamically compiled modules and maybe optimize if load test show it's slower.

remove_domain/2]).

-author('[email protected]').
-behaviour(mod_private).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this module should define the behaviour, not implement it. The backends themselves would implement it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That behaviour is defined in mod_private.
mod_private_backend implements this behaviour too. It just proxies it :)

We could move the behaviour definition from mod_private though ;)

@chrzaszcz
Copy link
Member

chrzaszcz commented Oct 8, 2021

Regarding the efficiency guide, I implemented the following:

-module(x).

-export([f1/1, f2/2, f3/3]).

f1(N) ->
    [lists:seq(1,10) || _ <- lists:seq(1,N)],
    ok.

f2(N, F) ->
    [F(1,10) || _ <- lists:seq(1,N)],
    ok.

f3(N, M, F) ->
    [apply(M,F,[1,10]) || _ <- lists:seq(1,N)],
    ok.

I called it in the shell:

74> timer:tc(x, f1, [10000000]).
{1060907,ok}
75> timer:tc(x, f2, [10000000, fun lists:seq/2]).
{1033693,ok}
76> timer:tc(x, f3, [10000000, lists, seq]).
{732091,ok}
77> timer:tc(x, f3, [10000000, lists, seq]).
{1101040,ok}

There were no measurable differences even for 10 million quick calls (!) and in the backend module we are calling a heavy function just once. For me getting rid of erlang:apply here would be premature optimization at its finest.

@NelsonVides
Copy link
Collaborator

Regarding the efficiency guide, I implemented the following:

-module(x).

-export([f1/1, f2/2, f3/3]).

f1(N) ->
    [lists:seq(1,10) || _ <- lists:seq(1,N)],
    ok.

f2(N, F) ->
    [F(1,10) || _ <- lists:seq(1,N)],
    ok.

f3(N, M, F) ->
    [apply(M,F,[1,10]) || _ <- lists:seq(1,N)],
    ok.

I called it in the shell:

74> timer:tc(x, f1, [10000000]).
{1060907,ok}
75> timer:tc(x, f2, [10000000, fun lists:seq/2]).
{1033693,ok}
76> timer:tc(x, f3, [10000000, lists, seq]).
{732091,ok}
77> timer:tc(x, f3, [10000000, lists, seq]).
{1101040,ok}

There were no measurable differences even for 10 million quick calls (!) and in the backend module we are calling a heavy function just once. For me getting rid of erlang:apply here would be premature optimization at its finest.

Shell code is not compiled code. Try using Benchee for better statistics and proper compilation.

@chrzaszcz
Copy link
Member

chrzaszcz commented Oct 8, 2021

Shell code is not compiled code. Try using Benchee for better statistics and proper compilation.

The point was to show how cheap all these calls are, not to measure the tiny differences. The lack of difference was only the icing on the cake for me.

Anyway, I tried to measure the difference without passing any function references from the shell and got the same results even if the function called was ok() -> ok. At this point I think it's splitting hairs and we could just move on. It is clearly not a place where we would measure any significant gain no matter how hard we try to optimize it.

@DenysGonchar
Copy link
Collaborator

Shell code is not compiled code. Try using Benchee for better statistics and proper compilation.

Being honest, I don't see any real reason to discuss it.

For calling the behavior implementation, you can not avoid apply(M,F,A) (or its equivalent) without dynamic compilation. And the main purpose of this PR is getting rid of dynamic compilation.

@arcusfelis
Copy link
Contributor Author

-module(benc).
-export([get_back/1]).
-export([get_pers/1]).
-export([get_pers_no_def/1]).

get_back(N) ->
    timer:tc(fun() -> get_back0(N) end).

get_back0(0) ->
    ok;
get_back0(N) ->
    gen_mod:get_backend_module(<<"localhost">>, mod_private),
    get_back0(N-1).



get_pers(N) ->
    timer:tc(fun() -> get_pers0(N) end).

get_pers0(0) ->
    ok;
get_pers0(N) ->
    persistent_term:get({backend_module, mod_private, <<"localhost">>}, mnesia),
    get_pers0(N-1).


get_pers_no_def(N) ->
    persistent_term:put({backend_module2, mod_private, <<"localhost">>}, mnesia),
    timer:tc(fun() -> get_pers_no_def0(N) end).

get_pers_no_def0(0) ->
    ok;
get_pers_no_def0(N) ->
    persistent_term:get({backend_module2, mod_private, <<"localhost">>}),
    get_pers_no_def0(N-1).
(mongooseim@localhost)9> benc:get_back(1000000).
{944182,ok}
(mongooseim@localhost)10> benc:get_pers(1000000).
{55140,ok}
(mongooseim@localhost)11> benc:get_pers_no_def(1000000).
{83843,ok}

@arcusfelis arcusfelis changed the base branch from master to without-dynamic-backend-modules October 11, 2021 11:35
@mongoose-im
Copy link
Collaborator

small_tests_24 / small_tests / 3ec796d
Reports root / small

@mongoose-im
Copy link
Collaborator

mongoose-im commented Oct 11, 2021

small_tests_24 / small_tests / ea36f02
Reports root / small


internal_mnesia_24 / internal_mnesia / ea36f02
Reports root/ big
OK: 1596 / Failed: 1 / User-skipped: 297 / Auto-skipped: 0

sm_SUITE:parallel_manual_ack_freq_1:resume_session_state_send_message
{error,
  {{assertion_failed,assert,is_presence,
     {xmlel,<<"message">>,
       [{<<"from">>,
         <<"bOb_resume_session_state_send_message_49.952849@localhost/escalus-default-resource">>},
        {<<"to">>,
         <<"alicE_resume_session_state_send_message_49.978429@localhost">>},
        {<<"xml:lang">>,<<"en">>},
        {<<"type">>,<<"chat">>}],
       [{xmlel,<<"body">>,[],[{xmlcdata,<<"msg-3">>}]},
        {xmlel,<<"delay">>,
          [{<<"xmlns">>,<<"urn:xmpp:delay">>},
           {<<"stamp">>,<<"2021-10-11T12:04:10.032966Z">>},
           {<<"from">>,<<"localhost">>}],
          [{xmlcdata,<<"Offline Storage">>}]}]},
     "<message from='bOb_resume_session_state_send_message_49.952849@localhost/escalus-default-resource' to='alicE_resume_session_state_send_message_49.978429@localhost' xml:lang='en' type='chat'><body>msg-3</body><delay xmlns='urn:xmpp:delay' stamp='2021-10-11T12:04:10.032966Z' from='localhost'>Offline Storage</delay></message>"},
   [{escalus_new_assert,assert_true,2,
      [{file,
         "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_new_assert.erl"},
       {line,84}]},
    {sm_SUITE,resume_session_state_send_message,1,
      [{file,"/home/circleci/app/big_tests/tests/sm_SUITE.erl"},
       {line,727}]},
    {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1783}]},
    {test_server,run_test_case_eval1,6,
      [{file,"test_server.erl"},{line,1292}]},
    {test_server,run_test_case_eval,9,
      [{file,"test_serve...

Report log

@mongoose-im
Copy link
Collaborator

mongoose-im commented Oct 11, 2021

small_tests_24 / small_tests / 22cc73c
Reports root / small


internal_mnesia_24 / internal_mnesia / 22cc73c
Reports root/ big
OK: 1589 / Failed: 0 / User-skipped: 297 / Auto-skipped: 0


small_tests_23 / small_tests / 22cc73c
Reports root / small


dynamic_domains_pgsql_mnesia_24 / pgsql_mnesia / 22cc73c
Reports root/ big
OK: 2727 / Failed: 1 / User-skipped: 184 / Auto-skipped: 0

rest_client_SUITE:muc:messages_can_be_paginated_in_room
{error,
  {{assertion_failed,assert,is_chat_message,
     [<<"967b220b">>],
     {xmlel,<<"message">>,
       [{<<"to">>,<<"[email protected]">>},
        {<<"type">>,<<"chat">>}],
       [{xmlel,<<"body">>,[],[{xmlcdata,<<"c7653654">>}]}]},
     "<message to='[email protected]' type='chat'><body>c7653654</body></message>"},
   [{escalus_new_assert,assert_true,2,
      [{file,
         "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_new_assert.erl"},
       {line,84}]},
    {rest_client_SUITE,assert_room_messages,2,
      [{file,"/home/circleci/app/big_tests/tests/rest_client_SUITE.erl"},
       {line,772}]},
    {escalus_story,story,4,
      [{file,
         "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
       {line,72}]},
    {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1783}]},
    {test_server,run_test_case_eval1,6,
      [{file,"test_server.erl"},{line,1292}]},
    {test_server,run_test_case_eval,9,
      [{file,"test_server.erl"},{line,1224}]}]}}

Report log


ldap_mnesia_24 / ldap_mnesia / 22cc73c
Reports root/ big
OK: 1486 / Failed: 0 / User-skipped: 400 / Auto-skipped: 0


ldap_mnesia_23 / ldap_mnesia / 22cc73c
Reports root/ big
OK: 1486 / Failed: 0 / User-skipped: 400 / Auto-skipped: 0


dynamic_domains_mysql_redis_24 / mysql_redis / 22cc73c
Reports root/ big
OK: 2685 / Failed: 0 / User-skipped: 201 / Auto-skipped: 0


dynamic_domains_pgsql_mnesia_23 / pgsql_mnesia / 22cc73c
Reports root/ big
OK: 2702 / Failed: 0 / User-skipped: 184 / Auto-skipped: 0


dynamic_domains_mssql_mnesia_24 / odbc_mssql_mnesia / 22cc73c
Reports root/ big
OK: 2701 / Failed: 1 / User-skipped: 184 / Auto-skipped: 0

service_domain_db_SUITE:db:db_keeps_syncing_after_cluster_join
{error,{test_case_failed,{[<<"example1.com">>,<<"example2.com">>,
               <<"example3.com">>],
              [<<"example1.com">>,<<"example2.com">>,
               <<"example3.com">>,<<"example4.com">>]}}}

Report log


pgsql_mnesia_24 / pgsql_mnesia / 22cc73c
Reports root/ big
OK: 3069 / Failed: 2 / User-skipped: 211 / Auto-skipped: 0

amp_big_SUITE:mam:mam_success:notify_deliver_to_offline_user_test
{error,{test_case_failed,"Respond size is 4, 1 is expected."}}

Report log

amp_big_SUITE:mam:mam_success:notify_deliver_to_offline_user_test
{error,
  {timeout_when_waiting_for_stanza,
    [{escalus_client,wait_for_stanza,
       [{client,
          <<"bOb_notify_deliver_to_offline_user_test_0.278163@localhost/new-session">>,
          escalus_tcp,<0.4318.0>,
          [{event_manager,<0.3662.0>},
           {server,<<"localhost">>},
           {username,
             <<"bOb_notify_deliver_to_offline_user_test_0.278163">>},
           {resource,<<"new-session">>}],
          [{event_client,
             [{event_manager,<0.3662.0>},
            {server,<<"localhost">>},
            {username,
              <<"bOb_notify_deliver_to_offline_user_test_0.278163">>},
            {resource,<<"new-session">>}]},
           {resource,<<"new-session">>},
           {username,
             <<"bOb_notify_deliver_to_offline_user_test_0.278163">>},
           {server,<<"localhost">>},
           {host,<<"localhost">>},
           {port,5222},
           {auth,{escalus_auth,auth_plain}},
           {wspath,undefined},
           {username,
             <<"bOb_notify_deliver_to_offline_user_test_0.278163">>},
           {server,<<"localhost">>},
           {password,<<"makrolika">>},
           {stream_id,<<"864b3ce4700dfe87">>}]},
        5000],
       [{file,
          "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
        {line,136}]},
     {mam_helper,wait_archive_respond_v04plus,1,
       [{file,"/home/circleci/app/big_tests/tests/mam_helper.erl"},
        {line,159}]},
     {mam_helper,wa...

Report log


pgsql_mnesia_23 / pgsql_mnesia / 22cc73c
Reports root/ big
OK: 3096 / Failed: 1 / User-skipped: 211 / Auto-skipped: 0

rest_client_SUITE:muc:messages_can_be_paginated_in_room
{error,
  {{assertion_failed,assert,is_chat_message,
     [<<"21d8b493">>],
     {xmlel,<<"message">>,
       [{<<"to">>,<<"[email protected]">>},
        {<<"type">>,<<"chat">>}],
       [{xmlel,<<"body">>,[],[{xmlcdata,<<"302ab7ed">>}]}]},
     "<message to='[email protected]' type='chat'><body>302ab7ed</body></message>"},
   [{escalus_new_assert,assert_true,2,
      [{file,
         "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_new_assert.erl"},
       {line,84}]},
    {rest_client_SUITE,assert_room_messages,2,
      [{file,"/home/circleci/app/big_tests/tests/rest_client_SUITE.erl"},
       {line,772}]},
    {escalus_story,story,4,
      [{file,
         "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
       {line,72}]},
    {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1784}]},
    {test_server,run_test_case_eval1,6,
      [{file,"test_server.erl"},{line,1293}]},
    {test_server,run_test_case_eval,9,
      [{file,"test_server.erl"},{line,1225}]}]}}

Report log


elasticsearch_and_cassandra_24 / elasticsearch_and_cassandra_mnesia / 22cc73c
Reports root/ big
OK: 1862 / Failed: 0 / User-skipped: 323 / Auto-skipped: 0


mssql_mnesia_24 / odbc_mssql_mnesia / 22cc73c
Reports root/ big
OK: 3091 / Failed: 4 / User-skipped: 211 / Auto-skipped: 0

carboncopy_SUITE:all:unavailable_resources_dont_get_carbons
{error,{{assertion_failed,assert_many,false,[is_presence,is_presence],[],[]},
    [{escalus_new_assert,assert_true,2,
               [{file,"/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_new_assert.erl"},
                {line,84}]},
     {escalus_story,story,4,
            [{file,"/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
             {line,72}]},
     {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1783}]},
     {test_server,run_test_case_eval1,6,
            [{file,"test_server.erl"},{line,1292}]},
     {test_server,run_test_case_eval,9,
            [{file,"test_server.erl"},{line,1224}]}]}}

Report log

carboncopy_SUITE:all:prop_forward_sent_chat_messages
{error,
  {{assertEqual,
     [{module,carboncopy_SUITE},
      {line,278},
      {expression,
        "proper : quickcheck ( proper : conjunction ( [ { PropName , Property } ] ) , [ verbose , long_result , { numtests , 3 } ] )"},
      {expected,true},
      {value,
        [[{forward_sent,
          [{3,
            <<"This old moon wanes! she lingers my desires">>}]}]]}]},
   [{carboncopy_SUITE,run_prop,2,
      [{file,"/home/circleci/app/big_tests/tests/carboncopy_SUITE.erl"},
       {line,278}]},
    {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1783}]},
    {test_server,run_test_case_eval1,6,
      [{file,"test_server.erl"},{line,1292}]},
    {test_server,run_test_case_eval,9,
      [{file,"test_server.erl"},{line,1224}]}]}}

Report log

carboncopy_SUITE:all:prop_normal_routing_to_bare_jid
{error,
  {{assertEqual,
     [{module,carboncopy_SUITE},
      {line,278},
      {expression,
        "proper : quickcheck ( proper : conjunction ( [ { PropName , Property } ] ) , [ verbose , long_result , { numtests , 3 } ] )"},
      {expected,true},
      {value,
        [[{normal_routing,
          [{3,<<"Long withering out a young man revenue.">>}]}]]}]},
   [{carboncopy_SUITE,run_prop,2,
      [{file,"/home/circleci/app/big_tests/tests/carboncopy_SUITE.erl"},
       {line,278}]},
    {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1783}]},
    {test_server,run_test_case_eval1,6,
      [{file,"test_server.erl"},{line,1292}]},
    {test_server,run_test_case_eval,9,
      [{file,"test_server.erl"},{line,1224}]}]}}

Report log

carboncopy_SUITE:all:unavailable_resources_dont_get_carbons
{error,{{assertion_failed,assert_many,false,[is_presence,is_presence],[],[]},
    [{escalus_new_assert,assert_true,2,
               [{file,"/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_new_assert.erl"},
                {line,84}]},
     {escalus_story,story,4,
            [{file,"/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
             {line,72}]},
     {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1783}]},
     {test_server,run_test_case_eval1,6,
            [{file,"test_server.erl"},{line,1292}]},
     {test_server,run_test_case_eval,9,
            [{file,"test_server.erl"},{line,1224}]}]}}

Report log


mysql_redis_24 / mysql_redis / 22cc73c
Reports root/ big
OK: 3054 / Failed: 0 / User-skipped: 228 / Auto-skipped: 0


riak_mnesia_24 / riak_mnesia / 22cc73c
Reports root/ big
OK: 1709 / Failed: 0 / User-skipped: 326 / Auto-skipped: 0


pgsql_mnesia_24 / pgsql_mnesia / 22cc73c
Reports root/ big
OK: 3074 / Failed: 1 / User-skipped: 211 / Auto-skipped: 0

mod_event_pusher_rabbit_SUITE:group_chat_message_publish:group_chat_message_received_event_properly_formatted
{error,
  {{assertMatch,
     [{module,mod_event_pusher_rabbit_SUITE},
      {line,435},
      {expression,
        "get_decoded_message_from_rabbit ( AliceGroupChatMsgRecvRK )"},
      {pattern,
        "# { << \"from_user_id\" >> := BobRoomJID , << \"to_user_id\" >> := AliceFullJID , << \"message\" >> := Message }"},
      {value,
        #{<<"from_user_id">> => <<"[email protected]">>,
        <<"message">> => <<>>,
        <<"to_user_id">> =>
          <<"alice_unnamed_24.733169@localhost/res1">>}}]},
   [{mod_event_pusher_rabbit_SUITE,
      '-group_chat_message_received_event_properly_formatted/1-fun-1-',3,
      [{file,
         "/home/circleci/app/big_tests/tests/mod_event_pusher_rabbit_SUITE.erl"},
       {line,435}]},
    {escalus_story,story,4,
      [{file,
         "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
       {line,72}]},
    {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1783}]},
    {test_server,run_test_case_eval1,6,
      [{file,"test_server.erl"},{line,1292}]},
    {test_server,run_test_case_eval,9,
      [{file,"test_server.erl"},{line,1224}]}]}}

Report log

Copy link
Member

@chrzaszcz chrzaszcz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really appreciate the effort towards more performant code, but while I approved the previous version, I cannot approve this one. It sacrifices readability, clarity and simplicity for questionable premature optimizations. Could you just keep it simple?

Some changes, like using the persistent term, are exactly what I was going to do in subsequent PR's, but it can be done here, I have no problem with this. Just please make the parts I commented below more straightforward.

include/backend_module.hrl Outdated Show resolved Hide resolved
%% Callback implemented by proxy modules.
-callback backend() -> module().
-compile({inline, [backend_key/2]}).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see no reason for such optimizations at this point. They also bring unwanted surprise when debugging.

src/mod_private_backend.erl Outdated Show resolved Hide resolved
src/mod_private_backend.erl Outdated Show resolved Hide resolved
src/mod_private_backend.erl Outdated Show resolved Hide resolved
src/backend_module.erl Outdated Show resolved Hide resolved
@mongoose-im
Copy link
Collaborator

mongoose-im commented Oct 12, 2021

small_tests_24 / small_tests / cf47c7d
Reports root / small


small_tests_23 / small_tests / cf47c7d
Reports root / small


internal_mnesia_24 / internal_mnesia / cf47c7d
Reports root/ big
OK: 1589 / Failed: 0 / User-skipped: 297 / Auto-skipped: 0


dynamic_domains_pgsql_mnesia_24 / pgsql_mnesia / cf47c7d
Reports root/ big
OK: 2702 / Failed: 0 / User-skipped: 184 / Auto-skipped: 0


ldap_mnesia_24 / ldap_mnesia / cf47c7d
Reports root/ big
OK: 1486 / Failed: 0 / User-skipped: 400 / Auto-skipped: 0


dynamic_domains_mysql_redis_24 / mysql_redis / cf47c7d
Reports root/ big
OK: 2685 / Failed: 0 / User-skipped: 201 / Auto-skipped: 0


ldap_mnesia_23 / ldap_mnesia / cf47c7d
Reports root/ big
OK: 1486 / Failed: 0 / User-skipped: 400 / Auto-skipped: 0


dynamic_domains_pgsql_mnesia_23 / pgsql_mnesia / cf47c7d
Reports root/ big
OK: 2727 / Failed: 1 / User-skipped: 184 / Auto-skipped: 0

rest_client_SUITE:muc:messages_can_be_paginated_in_room
{error,
  {{assertion_failed,assert,is_chat_message,
     [<<"c26498e6">>],
     {xmlel,<<"message">>,
       [{<<"to">>,<<"[email protected]">>},
        {<<"type">>,<<"chat">>}],
       [{xmlel,<<"body">>,[],[{xmlcdata,<<"c8d0aa16">>}]}]},
     "<message to='[email protected]' type='chat'><body>c8d0aa16</body></message>"},
   [{escalus_new_assert,assert_true,2,
      [{file,
         "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_new_assert.erl"},
       {line,84}]},
    {rest_client_SUITE,assert_room_messages,2,
      [{file,"/home/circleci/app/big_tests/tests/rest_client_SUITE.erl"},
       {line,772}]},
    {escalus_story,story,4,
      [{file,
         "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
       {line,72}]},
    {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1784}]},
    {test_server,run_test_case_eval1,6,
      [{file,"test_server.erl"},{line,1293}]},
    {test_server,run_test_case_eval,9,
      [{file,"test_server.erl"},{line,1225}]}]}}

Report log


dynamic_domains_mssql_mnesia_24 / odbc_mssql_mnesia / cf47c7d
Reports root/ big
OK: 2702 / Failed: 0 / User-skipped: 184 / Auto-skipped: 0


pgsql_mnesia_24 / pgsql_mnesia / cf47c7d
Reports root/ big
OK: 3071 / Failed: 0 / User-skipped: 211 / Auto-skipped: 0


mysql_redis_24 / mysql_redis / cf47c7d
Reports root/ big
OK: 3054 / Failed: 0 / User-skipped: 228 / Auto-skipped: 0


elasticsearch_and_cassandra_24 / elasticsearch_and_cassandra_mnesia / cf47c7d
Reports root/ big
OK: 1868 / Failed: 1 / User-skipped: 323 / Auto-skipped: 0

mod_ping_SUITE:server_ping:server_ping_pong
{error,{{badmatch,[{[<<"localhost">>,mod_ping,ping_response],
          {expected_diff,5},
          {before_story,0},
          {after_story,4}}]},
    [{escalus_mongooseim,post_story_check_metrics,1,
               [{file,"/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_mongooseim.erl"},
                {line,74}]},
     {escalus_mongooseim,maybe_check_metrics_post_story,1,
               [{file,"/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_mongooseim.erl"},
                {line,51}]},
     {escalus_story,story,4,
            [{file,"/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
             {line,75}]},
     {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1783}]},
     {test_server,run_test_case_eval1,6,
            [{file,"test_server.erl"},{line,1292}]},
     {test_server,run_test_case_eval,9,
            [{file,"test_server.erl"},{line,1224}]}]}}

Report log


mssql_mnesia_24 / odbc_mssql_mnesia / cf47c7d
Reports root/ big
OK: 3071 / Failed: 0 / User-skipped: 211 / Auto-skipped: 0


pgsql_mnesia_23 / pgsql_mnesia / cf47c7d
Reports root/ big
OK: 3071 / Failed: 0 / User-skipped: 211 / Auto-skipped: 0


riak_mnesia_24 / riak_mnesia / cf47c7d
Reports root/ big
OK: 1709 / Failed: 0 / User-skipped: 326 / Auto-skipped: 0

Copy link
Member

@chrzaszcz chrzaszcz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me, just please someone check the specs if they are all correct.

src/backend_module2.erl Outdated Show resolved Hide resolved
Move new code into mongoose_backend, just to keep it away from the old backend_module
Align args correctly
@mongoose-im
Copy link
Collaborator

mongoose-im commented Oct 12, 2021

small_tests_24 / small_tests / ecf2183
Reports root / small


internal_mnesia_24 / internal_mnesia / ecf2183
Reports root/ big
OK: 1589 / Failed: 0 / User-skipped: 297 / Auto-skipped: 0


small_tests_23 / small_tests / ecf2183
Reports root / small


dynamic_domains_pgsql_mnesia_24 / pgsql_mnesia / ecf2183
Reports root/ big
OK: 2702 / Failed: 0 / User-skipped: 184 / Auto-skipped: 0


dynamic_domains_mysql_redis_24 / mysql_redis / ecf2183
Reports root/ big
OK: 2684 / Failed: 1 / User-skipped: 201 / Auto-skipped: 0

service_domain_db_SUITE:db:db_keeps_syncing_after_cluster_join
{error,{test_case_failed,{[<<"example1.com">>],
              [<<"example1.com">>,<<"example2.com">>]}}}

Report log


ldap_mnesia_24 / ldap_mnesia / ecf2183
Reports root/ big
OK: 1486 / Failed: 0 / User-skipped: 400 / Auto-skipped: 0


ldap_mnesia_23 / ldap_mnesia / ecf2183
Reports root/ big
OK: 1486 / Failed: 0 / User-skipped: 400 / Auto-skipped: 0


dynamic_domains_mssql_mnesia_24 / odbc_mssql_mnesia / ecf2183
Reports root/ big
OK: 2702 / Failed: 0 / User-skipped: 184 / Auto-skipped: 0


dynamic_domains_pgsql_mnesia_23 / pgsql_mnesia / ecf2183
Reports root/ big
OK: 2702 / Failed: 0 / User-skipped: 184 / Auto-skipped: 0


pgsql_mnesia_24 / pgsql_mnesia / ecf2183
Reports root/ big
OK: 3077 / Failed: 1 / User-skipped: 211 / Auto-skipped: 0

mod_ping_SUITE:server_ping_kill:server_ping_pong
{error,{{badmatch,[{[<<"localhost">>,mod_ping,ping_response],
          {expected_diff,5},
          {before_story,5},
          {after_story,9}}]},
    [{escalus_mongooseim,post_story_check_metrics,1,
               [{file,"/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_mongooseim.erl"},
                {line,74}]},
     {escalus_mongooseim,maybe_check_metrics_post_story,1,
               [{file,"/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_mongooseim.erl"},
                {line,51}]},
     {escalus_story,story,4,
            [{file,"/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
             {line,75}]},
     {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1783}]},
     {test_server,run_test_case_eval1,6,
            [{file,"test_server.erl"},{line,1292}]},
     {test_server,run_test_case_eval,9,
            [{file,"test_server.erl"},{line,1224}]}]}}

Report log


elasticsearch_and_cassandra_24 / elasticsearch_and_cassandra_mnesia / ecf2183
Reports root/ big
OK: 1862 / Failed: 0 / User-skipped: 323 / Auto-skipped: 0


pgsql_mnesia_23 / pgsql_mnesia / ecf2183
Reports root/ big
OK: 3071 / Failed: 0 / User-skipped: 211 / Auto-skipped: 0


mssql_mnesia_24 / odbc_mssql_mnesia / ecf2183
Reports root/ big
OK: 3071 / Failed: 0 / User-skipped: 211 / Auto-skipped: 0


mysql_redis_24 / mysql_redis / ecf2183
Reports root/ big
OK: 3054 / Failed: 0 / User-skipped: 228 / Auto-skipped: 0


riak_mnesia_24 / riak_mnesia / ecf2183
Reports root/ big
OK: 1709 / Failed: 0 / User-skipped: 326 / Auto-skipped: 0


dynamic_domains_mysql_redis_24 / mysql_redis / ecf2183
Reports root/ big
OK: 2685 / Failed: 0 / User-skipped: 201 / Auto-skipped: 0

Copy link
Member

@chrzaszcz chrzaszcz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks even better 🙂

@chrzaszcz chrzaszcz merged commit 3d42507 into without-dynamic-backend-modules Oct 13, 2021
@chrzaszcz chrzaszcz deleted the mu-private-no-backend branch October 13, 2021 06:43
@Premwoik Premwoik added this to the 5.1.0 milestone May 30, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants