-
Notifications
You must be signed in to change notification settings - Fork 428
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
Fix doubled messaged in MAM bug #4374
Conversation
This comment was marked as outdated.
This comment was marked as outdated.
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #4374 +/- ##
==========================================
- Coverage 85.15% 85.15% -0.01%
==========================================
Files 549 549
Lines 33808 33811 +3
==========================================
+ Hits 28790 28791 +1
- Misses 5018 5020 +2 ☔ View full report in Codecov by Sentry. |
d7580eb
to
4348f52
Compare
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
24c3ea4
to
5d0747e
Compare
elasticsearch_and_cassandra_27 / elasticsearch_and_cassandra_mnesia / 5d0747e small_tests_26 / small_tests / 5d0747e small_tests_27_arm64 / small_tests / 5d0747e small_tests_27 / small_tests / 5d0747e ldap_mnesia_26 / ldap_mnesia / 5d0747e ldap_mnesia_27 / ldap_mnesia / 5d0747e dynamic_domains_mysql_redis_27 / mysql_redis / 5d0747e dynamic_domains_pgsql_mnesia_27 / pgsql_mnesia / 5d0747e dynamic_domains_pgsql_mnesia_26 / pgsql_mnesia / 5d0747e internal_mnesia_27 / internal_mnesia / 5d0747e pubsub_SUITE:dag+basic:subscribe_unsubscribe_test{error,{{badmatch,false},
[{pubsub_tools,check_response,2,
[{file,"/home/circleci/project/big_tests/tests/pubsub_tools.erl"},
{line,444}]},
{pubsub_tools,receive_response,3,
[{file,"/home/circleci/project/big_tests/tests/pubsub_tools.erl"},
{line,434}]},
{pubsub_tools,receive_and_check_response,4,
[{file,"/home/circleci/project/big_tests/tests/pubsub_tools.erl"},
{line,424}]},
{pubsub_SUITE,'-subscribe_unsubscribe_test/1-fun-0-',2,
[{file,"/home/circleci/project/big_tests/tests/pubsub_SUITE.erl"},
{line,357}]},
{escalus_story,story,4,
[{file,"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
{line,72}]},
{test_server,ts_tc,3,[{file,"test_server.erl"},{line,1794}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1303}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}} pgsql_cets_27 / pgsql_cets / 5d0747e connect_SUITE:just_tls:starttls_required:starttls_required_parallel:cannot_connect_with_proxy_header{error,
{thrown,
{{timeout,stream_end},
[{escalus_connection,get_stream_end,2,
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_connection.erl"},
{line,369}]},
{escalus_connection,end_stream,1,
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_connection.erl"},
{line,541}]},
{escalus_connection,stop,1,
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_connection.erl"},
{line,411}]},
{test_server,ts_tc,3,[{file,"test_server.erl"},{line,1794}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1303}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}}} dynamic_domains_mssql_mnesia_27 / odbc_mssql_mnesia / 5d0747e mysql_redis_27 / mysql_redis / 5d0747e pgsql_mnesia_27 / pgsql_mnesia / 5d0747e mssql_mnesia_27 / odbc_mssql_mnesia / 5d0747e pgsql_mnesia_26 / pgsql_mnesia / 5d0747e |
4d7249b
to
6623ca1
Compare
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
6623ca1
to
1c59564
Compare
This comment was marked as outdated.
This comment was marked as outdated.
1c59564
to
4bc5975
Compare
This comment was marked as outdated.
This comment was marked as outdated.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great PR! The tests look awesome! It was a tough task to find the solution to this issue. I've added one minor comment, because of test groups duplication. Besides it, everything else looks great!
The doubled message in MAM issue comes from the fact that MAM looks for a `mam_id` field in the accumulator when trying to save a message, and in the re-routing case, it is being stripped just a moment before. This happens, because re-routing uses the normal routing procedure, which strips the non-persistent accumulator fields, including the `mam_id`, in `mongoose_local_delivery`. Stripping is done, because in the usual routing case the perspective of the message processing changes at that point - sender processing is finished, and receiver processing starts. When retransmitting a message, we would like to process it from the receiver perspective once more, but with accumulator fields saved from the last time the it was processed. I decided to use the filter_unacknowledged_messages` hook in `mod_mam_pm`, which is called before retransmitting messages to save the `mam_id` as a permanent field in the accumulator. The "filter" name is analogous to the `filter_local_packet hook`, which is also used for processing in the broader sense than only filtering.
4bc5975
to
729c237
Compare
elasticsearch_and_cassandra_27 / elasticsearch_and_cassandra_mnesia / 729c237 small_tests_26 / small_tests / 729c237 small_tests_27_arm64 / small_tests / 729c237 small_tests_27 / small_tests / 729c237 ldap_mnesia_26 / ldap_mnesia / 729c237 ldap_mnesia_27 / ldap_mnesia / 729c237 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_1060@localhost/res1">>},
{<<"id">>,<<"bb7cdc34-8096-4726-ba9b-df0823af2e3e">>},
{<<"type">>,<<"set">>}],
[{xmlel,<<"jingle">>,
[{<<"xmlns">>,<<"urn:xmpp:jingle:1">>},
{<<"action">>,<<"session-terminate">>},
{<<"sid">>,<<"7ed004a3-b459-4cb0-8fc5-caa1bc9f3bac">>}],
[{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_1060@localhost/res1' id='bb7cdc34-8096-4726-ba9b-df0823af2e3e' type='set'><jingle xmlns='urn:xmpp:jingle:1' action='session-terminate' sid='7ed004a3-b459-4cb0-8fc5-caa1bc9f3bac'><reason><general-error/><sip-error code='480'>Temporarily Unavailable</sip-error></reason></jingle></iq>"},
[{escalus_new_assert,assert_true,2,
[{file,
"/home/circleci/project/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/project/big_tests/tests/jingle_SUITE.erl"},
{line,390}]},
{jingle_SUITE,
'-resp_... 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_1077@localhost/res1">>},
{<<"id">>,<<"75363ca4-8cc4-4635-87eb-8b1c33d2812f">>},
{<<"type">>,<<"set">>}],
[{xmlel,<<"jingle">>,
[{<<"xmlns">>,<<"urn:xmpp:jingle:1">>},
{<<"action">>,<<"session-terminate">>},
{<<"sid">>,<<"e602b61e-a19c-4349-9a6c-9ec175dc6208">>}],
[{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_1077@localhost/res1' id='75363ca4-8cc4-4635-87eb-8b1c33d2812f' type='set'><jingle xmlns='urn:xmpp:jingle:1' action='session-terminate' sid='e602b61e-a19c-4349-9a6c-9ec175dc6208'><reason><general-error/><sip-error code='480'>Temporarily Unavailable</sip-error></reason></jingle></iq>"},
[{escalus_new_assert,assert_true,2,
[{file,
"/home/circleci/project/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/project/big_tests/tests/jingle_SUITE.erl"},
{line,390}]},
{jingle_SUITE,
'-resp_... dynamic_domains_mysql_redis_27 / mysql_redis / 729c237 dynamic_domains_pgsql_mnesia_27 / pgsql_mnesia / 729c237 dynamic_domains_pgsql_mnesia_26 / pgsql_mnesia / 729c237 internal_mnesia_27 / internal_mnesia / 729c237 pgsql_mnesia_26 / pgsql_mnesia / 729c237 pgsql_cets_27 / pgsql_cets / 729c237 pgsql_mnesia_27 / pgsql_mnesia / 729c237 dynamic_domains_mssql_mnesia_27 / odbc_mssql_mnesia / 729c237 mysql_redis_27 / mysql_redis / 729c237 carboncopy_SUITE:one2one:dropped_client_doesnt_create_duplicate_carbons{error,
{{badmatch,
[{xmlel,<<"message">>,
[{<<"from">>,
<<"alice_dropped_client_doesnt_create_duplicate_carbons_588@localhost">>},
{<<"to">>,
<<"alice_dropped_client_doesnt_create_duplicate_carbons_588@localhost/res2">>},
{<<"xmlns">>,<<"jabber:client">>},
{<<"type">>,<<"chat">>}],
[{xmlel,<<"sent">>,
[{<<"xmlns">>,<<"urn:xmpp:carbons:2">>}],
[{xmlel,<<"forwarded">>,
[{<<"xmlns">>,<<"urn:xmpp:forward:0">>}],
[{xmlel,<<"message">>,
[{<<"from">>,
<<"alice_dropped_client_doesnt_create_duplicate_carbons_588@localhost/res1">>},
{<<"type">>,<<"chat">>},
{<<"to">>,
<<"bob_dropped_client_doesnt_create_duplicate_carbons_588@localhost/res1">>},
{<<"xmlns">>,<<"jabber:client">>}],
[{xmlel,<<"body">>,[],
[{xmlcdata,
<<"And pious action">>}]}]}]}]}]}]},
[{carboncopy_SUITE,
'-dropped_client_doesnt_create_duplicate_carbons/1-fun-0-',4,
[{file,
"/home/circleci/project/big_tests/tests/carboncopy_SUITE.erl"},
{line,189}]},
{escalus_story,story,4,
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
{line,72}]},
{test_server,ts_tc,3,[{file,"test_server.erl"},{line,1794}]},
{test_server,run_test_case_eval1,6,
[{file,"test_serv... rest_client_SUITE:security:non_default_http_server_name_is_returned_if_configured{error,{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim2@localhost},
mongoose_config,get_opt,
[listen]],
[{file,"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{rest_helper,get_port,3,
[{file,"/home/circleci/project/big_tests/tests/rest_helper.erl"},
{line,229}]},
{rest_helper,fusco_request,1,
[{file,"/home/circleci/project/big_tests/tests/rest_helper.erl"},
{line,179}]},
{rest_helper,make_request,1,
[{file,"/home/circleci/project/big_tests/tests/rest_helper.erl"},
{line,114}]},
{rest_client_SUITE,verify_server_name_in_header,2,
[{file,"/home/circleci/project/big_tests/tests/rest_client_SUITE.erl"},
{line,1467}]},
{test_server,ts_tc,3,[{file,"test_server.erl"},{line,1794}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1303}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}} s2s_SUITE:dialback:init_per_group{'EXIT',{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim2@localhost},
mnesia,system_info,
[is_running]],
[{file,"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{distributed_helper,has_mnesia,1,
[{file,"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,31}]},
{distributed_helper,add_node_to_cluster,2,
[{file,"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,34}]},
{test_server,ts_tc,3,[{file,"test_server.erl"},{line,1794}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1391}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}} service_mongoose_system_metrics_SUITE:init_per_suite{'EXIT',
{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim2@localhost},
mongoose_service,loaded_services_with_opts,[]],
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{dynamic_services,save_services,2,
[{file,
"/home/circleci/project/big_tests/tests/dynamic_services.erl"},
{line,15}]},
{lists,foldl_1,3,[{file,"lists.erl"},{line,2151}]},
{service_mongoose_system_metrics_SUITE,init_per_suite,1,
[{file,
"/home/circleci/project/big_tests/tests/service_mongoose_system_metrics_SUITE.erl"},
{line,78}]},
{test_server,ts_tc,3,[{file,"test_server.erl"},{line,1794}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1391}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}} system_probes_SUITE:mnesia:mnesia_info{error,{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim2@localhost},
mnesia,system_info,
[is_running]],
[{file,"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{distributed_helper,has_mnesia,1,
[{file,"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,31}]},
{distributed_helper,add_node_to_cluster,2,
[{file,"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,34}]},
{system_probes_SUITE,mnesia_info,1,
[{file,"/home/circleci/project/big_tests/tests/system_probes_SUITE.erl"},
{line,96}]},
{test_server,ts_tc,3,[{file,"test_server.erl"},{line,1794}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1303}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}} service_domain_db_SUITE:init_per_suite{'EXIT',
{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim2@localhost},
mongoose_service,loaded_services_with_opts,[]],
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{dynamic_services,save_services,2,
[{file,
"/home/circleci/project/big_tests/tests/dynamic_services.erl"},
{line,15}]},
{lists,foldl_1,3,[{file,"lists.erl"},{line,2151}]},
{service_domain_db_SUITE,init_per_suite,1,
[{file,
"/home/circleci/project/big_tests/tests/service_domain_db_SUITE.erl"},
{line,198}]},
{test_server,ts_tc,3,[{file,"test_server.erl"},{line,1794}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1391}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}} dynamic_domains_SUITE:init_per_suite{'EXIT',
{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim2@localhost},mnesia,system_info,[is_running]],
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{distributed_helper,has_mnesia,1,
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,31}]},
{distributed_helper,add_node_to_cluster,2,
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,34}]},
{dynamic_domains_SUITE,cluster_nodes,2,
[{file,
"/home/circleci/project/big_tests/tests/dynamic_domains_SUITE.erl"},
{line,238}]},
{dynamic_domains_SUITE,init_per_suite,1,
[{file,
"/home/circleci/project/big_tests/tests/dynamic_domains_SUITE.erl"},
{line,33}]},
{test_server,ts_tc,3,[{file,"test_server.erl"},{line,1794}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1391}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}} local_iq_SUITE:init_per_suite{'EXIT',{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim2@localhost},
mnesia,system_info,
[is_running]],
[{file,"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{distributed_helper,has_mnesia,1,
[{file,"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,31}]},
{distributed_helper,add_node_to_cluster,2,
[{file,"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,34}]},
{local_iq_SUITE,init_per_suite,1,
[{file,"/home/circleci/project/big_tests/tests/local_iq_SUITE.erl"},
{line,29}]},
{test_server,ts_tc,3,[{file,"test_server.erl"},{line,1794}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1391}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}} cets_disco_SUITE:file:file_backend{failed,
{cets_disco_SUITE,end_per_testcase,
{'EXIT',
{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim2@localhost},meck,unload,[]],
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{test_server,do_end_per_testcase,4,
[{file,"test_server.erl"},{line,1638}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1346}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}}}} cets_disco_SUITE:rdbms:rdbms_backend{error,{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim2@localhost},
mongoose_cets_discovery_rdbms,init,
[#{cluster_name =>
<<"big_test_rdbms_backend_74004173a06ad49d">>,
node_name_to_insert => <<"test2">>}]],
[{file,"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{cets_disco_SUITE,disco_init,2,
[{file,"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,276}]},
{cets_disco_SUITE,init_and_get_nodes,3,
[{file,"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,263}]},
{cets_disco_SUITE,rdbms_backend,1,
[{file,"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,99}]},
{test_server,ts_tc,3,[{file,"test_server.erl"},{line,1794}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1303}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}} cets_disco_SUITE:rdbms:rdbms_backend_supports_cluster_change{error,{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim2@localhost},
mongoose_cets_discovery_rdbms,init,
[#{cluster_name =>
<<"big_test_rdbms_backend_supports_cluster_change_9652abadd19c67f1">>,
node_name_to_insert => <<"test2">>}]],
[{file,"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{cets_disco_SUITE,disco_init,2,
[{file,"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,276}]},
{cets_disco_SUITE,init_and_get_nodes,3,
[{file,"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,263}]},
{cets_disco_SUITE,rdbms_backend_supports_cluster_change,1,
[{file,"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,112}]},
{test_server,ts_tc,3,[{file,"test_server.erl"},{line,1794}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1303}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}} cets_disco_SUITE:rdbms:rdbms_backend_cluster_name_contains_cets_version{failed,
{cets_disco_SUITE,end_per_testcase,
{'EXIT',
{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim2@localhost},meck,unload,[]],
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{test_server,do_end_per_testcase,4,
[{file,"test_server.erl"},{line,1638}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1346}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}}}} cets_disco_SUITE:rdbms:rdbms_backend_supports_auto_cleaning{error,{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim2@localhost},
mongoose_cets_discovery_rdbms,init,
[#{cluster_name =>
<<"big_test_rdbms_backend_supports_auto_cleaning_e4ba058af6e4ae0f">>,
node_name_to_insert => <<"test2">>}]],
[{file,"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{cets_disco_SUITE,disco_init,2,
[{file,"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,276}]},
{cets_disco_SUITE,init_and_get_nodes,3,
[{file,"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,263}]},
{cets_disco_SUITE,rdbms_backend_supports_auto_cleaning,1,
[{file,"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,146}]},
{test_server,ts_tc,3,[{file,"test_server.erl"},{line,1794}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1303}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}} cets_disco_SUITE:rdbms:rdbms_backend_node_doesnt_remove_itself{error,{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim2@localhost},
mongoose_cets_discovery_rdbms,init,
[#{cluster_name =>
<<"big_test_rdbms_backend_node_doesnt_remove_itself_f2a889157e84a3a1">>,
node_name_to_insert => <<"test2">>}]],
[{file,"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{cets_disco_SUITE,disco_init,2,
[{file,"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,276}]},
{cets_disco_SUITE,init_and_get_nodes,3,
[{file,"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,263}]},
{cets_disco_SUITE,rdbms_backend_node_doesnt_remove_itself,1,
[{file,"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,169}]},
{test_server,ts_tc,3,[{file,"test_server.erl"},{line,1794}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1303}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}} cets_disco_SUITE:rdbms:rdbms_backend_db_queries{failed,
{cets_disco_SUITE,end_per_testcase,
{'EXIT',
{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim2@localhost},meck,unload,[]],
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{test_server,do_end_per_testcase,4,
[{file,"test_server.erl"},{line,1638}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1346}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}}}} cets_disco_SUITE:rdbms:rdbms_backend_publishes_node_ip{error,{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim2@localhost},
mongoose_cets_discovery_rdbms,init,
[#{cluster_name =>
<<"big_test_rdbms_backend_publishes_node_ip_0d23724ba2b8012a">>,
node_name_to_insert =>
<<"mongooseim2@localhost">>,
node_ip_binary => <<"127.0.0.1">>}]],
[{file,"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{cets_disco_SUITE,disco_init,2,
[{file,"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,276}]},
{cets_disco_SUITE,rdbms_backend_publishes_node_ip,1,
[{file,"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,210}]},
{test_server,ts_tc,3,[{file,"test_server.erl"},{line,1794}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1303}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}} cets_disco_SUITE:rdbms:no_record_for_node{failed,
{cets_disco_SUITE,end_per_testcase,
{'EXIT',
{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim2@localhost},meck,unload,[]],
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{test_server,do_end_per_testcase,4,
[{file,"test_server.erl"},{line,1638}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1346}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}}}} cets_disco_SUITE:rdbms:no_ip_in_db{failed,
{cets_disco_SUITE,end_per_testcase,
{'EXIT',
{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim2@localhost},meck,unload,[]],
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{test_server,do_end_per_testcase,4,
[{file,"test_server.erl"},{line,1638}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1346}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}}}} cets_disco_SUITE:rdbms:epmd_just_returns_ip_from_db{failed,
{cets_disco_SUITE,end_per_testcase,
{'EXIT',
{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim2@localhost},meck,unload,[]],
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{test_server,do_end_per_testcase,4,
[{file,"test_server.erl"},{line,1638}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1346}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}}}} cets_disco_SUITE:rdbms:address_please{failed,
{cets_disco_SUITE,end_per_testcase,
{'EXIT',
{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim2@localhost},meck,unload,[]],
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{test_server,do_end_per_testcase,4,
[{file,"test_server.erl"},{line,1638}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1346}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}}}} cets_disco_SUITE:rdbms:address_please_returns_ip{skip,
{failed,
{cets_disco_SUITE,init_per_testcase,
{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim2@localhost},
supervisor,start_child,
[ejabberd_sup,
#{id => cets_discovery,restart => temporary,
shutdown => infinity,
start =>
{mongoose_cets_discovery,start_link,
[#{name => mongoose_cets_discovery,
cluster_name => <<"mim">>,
node_name_to_insert =>
<<"testmim2@localhost">>,
node_ip_binary => <<"192.168.115.112">>,
backend_module =>
mongoose_cets_discovery_rdbms}]},
type => worker,
modules => [cets_discovery]}]],
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{cets_disco_SUITE,start_disco,2,
[{file,
"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,425}]},
{cets_disco_SUITE,start_cets_discovery,1,
[{file,
"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,349}]},
{test_server,do_init_per_testcase,2,
[{file,"test_server.erl"},{line,1564}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1265}]},
{test_server,run_test_case_eval,9,
[{file,"te... cets_disco_SUITE:rdbms:address_please_returns_ip_fallbacks_to_resolve_with_file_backend{skip,
{failed,
{cets_disco_SUITE,init_per_testcase,
{{badmatch,{error,{already_started,<10456.146518.0>}}},
[{cets_disco_SUITE,start_disco,2,
[{file,
"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,425}]},
{cets_disco_SUITE,start_cets_discovery_with_file_backnend,1,
[{file,
"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,360}]},
{test_server,do_init_per_testcase,2,
[{file,"test_server.erl"},{line,1564}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1265}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}}}} cets_disco_SUITE:rdbms:address_please_returns_ip_127_0_0_1_from_db{skip,
{failed,
{cets_disco_SUITE,init_per_testcase,
{{badmatch,{error,{already_started,<10456.146518.0>}}},
[{cets_disco_SUITE,start_disco,2,
[{file,
"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,425}]},
{cets_disco_SUITE,start_cets_discovery_with_real_ips,1,
[{file,
"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,354}]},
{test_server,do_init_per_testcase,2,
[{file,"test_server.erl"},{line,1564}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1265}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}}}} cets_disco_SUITE:rdbms:end_per_group{error,{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim2@localhost},
mongoose_cets_discovery,supervisor_specs,[]],
[{file,"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{cets_disco_SUITE,restore_default_cets_discovery,1,
[{file,"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,386}]},
{cets_disco_SUITE,end_per_group,2,
[{file,"/home/circleci/project/big_tests/tests/cets_disco_SUITE.erl"},
{line,58}]},
{test_server,ts_tc,3,[{file,"test_server.erl"},{line,1794}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1391}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1235}]}]}} mssql_mnesia_27 / odbc_mssql_mnesia / 729c237 mysql_redis_27 / mysql_redis / 729c237 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good 👍🏻
The doubled message in MAM issue comes from the fact that MAM looks for a
mam_id
field in the accumulator when trying to save a message, and in the re-routing case, it is being stripped just a moment before.This happens, because re-routing uses the normal routing procedure, which strips the non-persistent accumulator fields, including the
mam_id
, inmongoose_local_delivery
. Stripping is done, because in the usual routing case the perspective of the message processing changes at that point - sender processing is finished, and receiver processing starts.When retransmitting a message, we would like to process it from the receiver perspective once more, but with accumulator fields saved from the last time it was processed. I decided to use the
filter_unacknowledged_messages
hook inmod_mam_pm
, which is called before retransmitting messages to save themam_id
as a permanent field in the accumulator. The "filter" name is analogous to thefilter_local_packet hook
, which is also used for processing in the broader sense than only filtering.I'm not certain if the retransmission itself is a correct behaviour, and if the stanza shouldn't contain a "delay" element, however I couldn't find a definitive answer in the Stream Management XEP or in the XMPP Core RFC.
The tests are added to check that the bug has been fixed, as well as document the current retransmitting behaviour.