-
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 event not registered on shutdown #4400
Conversation
And websocket clients
Disallow new connections by calling suspend_listeners Call broadcast_c2s_shutdown_sup Call mongoose_listener:stop This should unify behaviour of c2s and websockets when shutting down the node
elasticsearch_and_cassandra_27 / elasticsearch_and_cassandra_mnesia / 8d032a3 gdpr_SUITE:retrieve_personal_data:retrieve_personal_data_mam:retrieve_personal_data_mam_cassandra:retrieve_mam_muc{error,{#{what => invalid_response_code,expected_type => ok,
response_code => {exit_status,1}},
[{graphql_helper,assert_response_code,2,
[{file,"/home/circleci/project/big_tests/tests/graphql_helper.erl"},
{line,258}]},
{graphql_helper,get_ok_value,2,
[{file,"/home/circleci/project/big_tests/tests/graphql_helper.erl"},
{line,241}]},
{gdpr_SUITE,request_and_unzip_personal_data,3,
[{file,"/home/circleci/project/big_tests/tests/gdpr_SUITE.erl"},
{line,1692}]},
{gdpr_SUITE,'-retrieve_mam_muc/1-fun-2-',4,
[{file,"/home/circleci/project/big_tests/tests/gdpr_SUITE.erl"},
{line,652}]},
{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}]}]}} gdpr_SUITE:retrieve_personal_data:retrieve_personal_data_mam:retrieve_personal_data_mam_cassandra:retrieve_mam_muc_private_msg{error,{#{what => invalid_response_code,expected_type => ok,
response_code => {exit_status,1}},
[{graphql_helper,assert_response_code,2,
[{file,"/home/circleci/project/big_tests/tests/graphql_helper.erl"},
{line,258}]},
{graphql_helper,get_ok_value,2,
[{file,"/home/circleci/project/big_tests/tests/graphql_helper.erl"},
{line,241}]},
{gdpr_SUITE,request_and_unzip_personal_data,3,
[{file,"/home/circleci/project/big_tests/tests/gdpr_SUITE.erl"},
{line,1692}]},
{gdpr_SUITE,'-retrieve_mam_muc_private_msg/1-fun-2-',3,
[{file,"/home/circleci/project/big_tests/tests/gdpr_SUITE.erl"},
{line,686}]},
{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}]}]}} small_tests_27 / small_tests / 8d032a3 small_tests_26 / small_tests / 8d032a3 small_tests_27_arm64 / small_tests / 8d032a3 ldap_mnesia_27 / ldap_mnesia / 8d032a3 dynamic_domains_mysql_redis_27 / mysql_redis / 8d032a3 ldap_mnesia_26 / ldap_mnesia / 8d032a3 dynamic_domains_pgsql_mnesia_26 / pgsql_mnesia / 8d032a3 internal_mnesia_27 / internal_mnesia / 8d032a3 pgsql_cets_27 / pgsql_cets / 8d032a3 dynamic_domains_mssql_mnesia_27 / odbc_mssql_mnesia / 8d032a3 dynamic_domains_pgsql_mnesia_27 / pgsql_mnesia / 8d032a3 pgsql_mnesia_26 / pgsql_mnesia / 8d032a3 mssql_mnesia_27 / odbc_mssql_mnesia / 8d032a3 pgsql_mnesia_27 / pgsql_mnesia / 8d032a3 mysql_redis_27 / mysql_redis / 8d032a3 mod_global_distrib_SUITE:cluster_restart:test_location_disconnect{error,
{timeout_when_waiting_for_stanza,
[{escalus_client,wait_for_stanza,
[{client,
<<"alice_test_location_disconnect_2833@localhost/res1">>,
escalus_tcp,<0.68760.0>,
[{event_manager,<0.68756.0>},
{server,<<"localhost">>},
{username,<<"alicE_test_location_disconnect_2833">>},
{resource,<<"res1">>}],
[{event_client,
[{event_manager,<0.68756.0>},
{server,<<"localhost">>},
{username,<<"alicE_test_location_disconnect_2833">>},
{resource,<<"res1">>}]},
{resource,<<"res1">>},
{username,<<"alice_test_location_disconnect_2833">>},
{server,<<"localhost">>},
{host,<<"localhost">>},
{port,5222},
{auth,{escalus_auth,auth_plain}},
{wspath,undefined},
{username,<<"alicE_test_location_disconnect_2833">>},
{server,<<"localhost">>},
{password,<<"matygrysa">>},
{stream_id,<<"5ad58f29a27edfd2">>}]},
5000],
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
{line,136}]},
{mod_global_distrib_SUITE,'-test_location_disconnect/1-fun-0-',2,
[{file,
"/home/circleci/project/big_tests/tests/mod_global_distrib_SUITE.erl"},
{line,702}]},
{escalus_story,story,4,
[{file,
"/home/circleci/project/big_tests/_build/default/lib/esca... cockroachdb_cets_27 / cockroachdb_cets / 8d032a3 elasticsearch_and_cassandra_27 / elasticsearch_and_cassandra_mnesia / 8d032a3 mysql_redis_27 / mysql_redis / 8d032a3 mod_global_distrib_SUITE:cluster_restart:test_location_disconnect{error,
{timeout_when_waiting_for_stanza,
[{escalus_client,wait_for_stanza,
[{client,
<<"alice_test_location_disconnect_2795@localhost/res1">>,
escalus_tcp,<0.68980.0>,
[{event_manager,<0.68976.0>},
{server,<<"localhost">>},
{username,<<"alicE_test_location_disconnect_2795">>},
{resource,<<"res1">>}],
[{event_client,
[{event_manager,<0.68976.0>},
{server,<<"localhost">>},
{username,<<"alicE_test_location_disconnect_2795">>},
{resource,<<"res1">>}]},
{resource,<<"res1">>},
{username,<<"alice_test_location_disconnect_2795">>},
{server,<<"localhost">>},
{host,<<"localhost">>},
{port,5222},
{auth,{escalus_auth,auth_plain}},
{wspath,undefined},
{username,<<"alicE_test_location_disconnect_2795">>},
{server,<<"localhost">>},
{password,<<"matygrysa">>},
{stream_id,<<"37d77508149bf259">>}]},
5000],
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
{line,136}]},
{mod_global_distrib_SUITE,'-test_location_disconnect/1-fun-0-',2,
[{file,
"/home/circleci/project/big_tests/tests/mod_global_distrib_SUITE.erl"},
{line,702}]},
{escalus_story,story,4,
[{file,
"/home/circleci/project/big_tests/_build/default/lib/esca... mysql_redis_27 / mysql_redis / 8d032a3 mod_global_distrib_SUITE:cluster_restart:test_location_disconnect{error,
{timeout_when_waiting_for_stanza,
[{escalus_client,wait_for_stanza,
[{client,
<<"alice_test_location_disconnect_2802@localhost/res1">>,
escalus_tcp,<0.68650.0>,
[{event_manager,<0.68646.0>},
{server,<<"localhost">>},
{username,<<"alicE_test_location_disconnect_2802">>},
{resource,<<"res1">>}],
[{event_client,
[{event_manager,<0.68646.0>},
{server,<<"localhost">>},
{username,<<"alicE_test_location_disconnect_2802">>},
{resource,<<"res1">>}]},
{resource,<<"res1">>},
{username,<<"alice_test_location_disconnect_2802">>},
{server,<<"localhost">>},
{host,<<"localhost">>},
{port,5222},
{auth,{escalus_auth,auth_plain}},
{wspath,undefined},
{username,<<"alicE_test_location_disconnect_2802">>},
{server,<<"localhost">>},
{password,<<"matygrysa">>},
{stream_id,<<"bf062c7e08214252">>}]},
5000],
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
{line,136}]},
{mod_global_distrib_SUITE,'-test_location_disconnect/1-fun-0-',2,
[{file,
"/home/circleci/project/big_tests/tests/mod_global_distrib_SUITE.erl"},
{line,702}]},
{escalus_story,story,4,
[{file,
"/home/circleci/project/big_tests/_build/default/lib/esca... mysql_redis_27 / mysql_redis / 8d032a3 mod_global_distrib_SUITE:cluster_restart:test_location_disconnect{error,
{timeout_when_waiting_for_stanza,
[{escalus_client,wait_for_stanza,
[{client,
<<"alice_test_location_disconnect_2808@localhost/res1">>,
escalus_tcp,<0.68707.0>,
[{event_manager,<0.68703.0>},
{server,<<"localhost">>},
{username,<<"alicE_test_location_disconnect_2808">>},
{resource,<<"res1">>}],
[{event_client,
[{event_manager,<0.68703.0>},
{server,<<"localhost">>},
{username,<<"alicE_test_location_disconnect_2808">>},
{resource,<<"res1">>}]},
{resource,<<"res1">>},
{username,<<"alice_test_location_disconnect_2808">>},
{server,<<"localhost">>},
{host,<<"localhost">>},
{port,5222},
{auth,{escalus_auth,auth_plain}},
{wspath,undefined},
{username,<<"alicE_test_location_disconnect_2808">>},
{server,<<"localhost">>},
{password,<<"matygrysa">>},
{stream_id,<<"ed8c1d51ef2de993">>}]},
5000],
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
{line,136}]},
{mod_global_distrib_SUITE,'-test_location_disconnect/1-fun-0-',2,
[{file,
"/home/circleci/project/big_tests/tests/mod_global_distrib_SUITE.erl"},
{line,702}]},
{escalus_story,story,4,
[{file,
"/home/circleci/project/big_tests/_build/default/lib/esca... |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #4400 +/- ##
=======================================
Coverage 85.28% 85.29%
=======================================
Files 550 550
Lines 33859 33880 +21
=======================================
+ Hits 28877 28898 +21
Misses 4982 4982 ☔ View full report in Codecov by Sentry. |
mod_global_distrib_SUITE:test_location_disconnect fails trying to route stanza to pid from another cluster (i.e. fed1). So, it just looses a message instead of giving 503 error
Useful to debug when some errors happen
Hook callbacks should match the hook names
To debug harder cases
elasticsearch_and_cassandra_27 / elasticsearch_and_cassandra_mnesia / eb6c12d small_tests_27 / small_tests / eb6c12d small_tests_26 / small_tests / eb6c12d small_tests_27_arm64 / small_tests / eb6c12d ldap_mnesia_26 / ldap_mnesia / eb6c12d dynamic_domains_mysql_redis_27 / mysql_redis / eb6c12d ldap_mnesia_27 / ldap_mnesia / eb6c12d dynamic_domains_pgsql_mnesia_26 / pgsql_mnesia / eb6c12d internal_mnesia_27 / internal_mnesia / eb6c12d dynamic_domains_pgsql_mnesia_27 / pgsql_mnesia / eb6c12d rdbms_SUITE:global_rdbms_queries:test_failed_wrapper_transaction{error,
{{assertEqual,
[{module,rdbms_SUITE},
{line,581},
{expression,"rpc ( mim ( ) , meck , history , [ supervisor ] )"},
{expected,[]},
{value,
[{<10418.116101.0>,
{supervisor,handle_call,
[which_children,
{<10418.120459.0>,#Ref<10418.4016822428.296484867.44667>},
{state,
{local,mongoose_listener_sup},
one_for_one,
{[{8189,{127,0,0,1},tcp},
{8666,{127,0,0,1},tcp},
{8888,{127,0,0,1},tcp},
{5269,{0,0,0,0},tcp},
{9091,{0,0,0,0},tcp},
{5561,{0,0,0,0},tcp},
{5541,{0,0,0,0},tcp},
{5551,{127,0,0,1},tcp},
{8089,{0,0,0,0},tcp},
{8088,{127,0,0,1},tcp},
{5285,{0,0,0,0},tcp},
{5280,{0,0,0,0},tcp},
{5223,{0,0,0,0},tcp},
{5222,{0,0,0,0},tcp}],
#{{5222,{0,0,0,0},tcp} =>
{child,<10418.116288.0>,
{5222,{0,0,0,0},tcp},
{mongoose_c2s_listener,start_link,
[#{access => c2s,module => mongoose_c2s_listener,port => 5222,
num_acceptors => 100,hibernate_after => 0,backlog => 1024,
state_timeout => 5000,
tls =>
#{module => fast_tls,mode => starttls,verify_mode => none,
certfile => "priv/ssl/fake_server.pem",
dhfile => "priv/ssl/fake_dh_server.pem",
protocol_options =>
["no_sslv2","no_sslv3","no_tlsv1","no_tlsv1_1"],
ciphers => "TLSv1.2:TLSv1.3"},
proxy_protocol => false,shaper => c2s_shaper,
backwards_compat... pgsql_cets_27 / pgsql_cets / eb6c12d dynamic_domains_mssql_mnesia_27 / odbc_mssql_mnesia / eb6c12d graphql_server_SUITE:admin_cli:clustering_tests:remove_alive_from_cluster{failed,
{graphql_server_SUITE,end_per_testcase,
{'EXIT',
{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim3@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,remove_node_from_cluster,2,
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,53}]},
{graphql_server_SUITE,end_per_testcase,2,
[{file,
"/home/circleci/project/big_tests/tests/graphql_server_SUITE.erl"},
{line,121}]},
{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}]}]}}}} graphql_server_SUITE:admin_cli:clustering_tests:remove_node_test{error,{#{what => invalid_response_code,expected_type => ok,
response_code => {exit_status,3}},
[{graphql_helper,assert_response_code,2,
[{file,"/home/circleci/project/big_tests/tests/graphql_helper.erl"},
{line,258}]},
{graphql_helper,get_ok_value,2,
[{file,"/home/circleci/project/big_tests/tests/graphql_helper.erl"},
{line,241}]},
{graphql_server_SUITE,remove_node_test,1,
[{file,"/home/circleci/project/big_tests/tests/graphql_server_SUITE.erl"},
{line,225}]},
{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}]}]}} graphql_server_SUITE:admin_cli:clustering_tests:stop_node_test{error,{#{what => invalid_response_code,expected_type => ok,
response_code => {exit_status,3}},
[{graphql_helper,assert_response_code,2,
[{file,"/home/circleci/project/big_tests/tests/graphql_helper.erl"},
{line,258}]},
{graphql_helper,get_ok_value,2,
[{file,"/home/circleci/project/big_tests/tests/graphql_helper.erl"},
{line,241}]},
{graphql_server_SUITE,stop_node_test,1,
[{file,"/home/circleci/project/big_tests/tests/graphql_server_SUITE.erl"},
{line,230}]},
{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}]}]}} metrics_api_SUITE:all_metrics_are_global:end_per_group{error,
{{badrpc,
{'EXIT',
{{badmatch,{[{atomic,ok}],[mongooseim3@localhost]}},
[{mongoose_cluster,detach_nodes,1,
[{file,"/home/circleci/project/src/mongoose_cluster.erl"},
{line,210}]},
{mongoose_cluster,'-do_leave/0-fun-0-',0,
[{file,"/home/circleci/project/src/mongoose_cluster.erl"},
{line,52}]},
{mongoose_cluster,with_app_stopped,2,
[{file,"/home/circleci/project/src/mongoose_cluster.erl"},
{line,219}]},
{global,trans,4,[{file,"global.erl"},{line,699}]},
{mongoose_cluster,leave,0,[]}]}}},
[{distributed_helper,rpc,
[#{timeout => 30000,node => mongooseim2@localhost},
mongoose_cluster,leave,[]],
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{distributed_helper,remove_node_from_cluster,2,
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,55}]},
{metrics_helper,finalize_by_all_metrics_are_global,2,
[{file,"/home/circleci/project/big_tests/tests/metrics_helper.erl"},
{line,30}]},
{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}]}]}} metrics_api_SUITE:global:cluster_size{skip,
{failed,
{metrics_api_SUITE,init_per_testcase,
{{badrpc,
{'EXIT',
{{badmatch,{[{atomic,ok}],[mongooseim3@localhost]}},
[{mongoose_cluster,detach_nodes,1,
[{file,
"/home/circleci/project/src/mongoose_cluster.erl"},
{line,210}]},
{mongoose_cluster,'-do_leave/0-fun-0-',0,
[{file,
"/home/circleci/project/src/mongoose_cluster.erl"},
{line,52}]},
{mongoose_cluster,with_app_stopped,2,
[{file,
"/home/circleci/project/src/mongoose_cluster.erl"},
{line,219}]},
{global,trans,4,[{file,"global.erl"},{line,699}]},
{mongoose_cluster,leave,0,[]}]}}},
[{distributed_helper,rpc,
[#{timeout => 30000,node => mongooseim2@localhost},
mongoose_cluster,leave,[]],
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{distributed_helper,remove_node_from_cluster,2,
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,55}]},
{metrics_api_SUITE,'-ensure_nodes_not_clustered/1-lc$^1/1-1-',
2,
[{file,
"/home/circleci/project/big_tests/tests/metrics_api_SUITE.erl"},
{line,475}]},
{metrics_api_SUITE,ensure_nodes_not_clustered,1,
... persistent_cluster_id_SUITE:rdbms:all_nodes_in_the_cluster_have_the_same_cluster_id{failed,
{persistent_cluster_id_SUITE,end_per_testcase,
{'EXIT',
{{badrpc,
{'EXIT',
{{badmatch,{[{atomic,ok}],[mongooseim3@localhost]}},
[{mongoose_cluster,detach_nodes,1,
[{file,
"/home/circleci/project/src/mongoose_cluster.erl"},
{line,210}]},
{mongoose_cluster,'-do_leave/0-fun-0-',0,
[{file,
"/home/circleci/project/src/mongoose_cluster.erl"},
{line,52}]},
{mongoose_cluster,with_app_stopped,2,
[{file,
"/home/circleci/project/src/mongoose_cluster.erl"},
{line,219}]},
{global,trans,4,[{file,"global.erl"},{line,699}]},
{mongoose_cluster,leave,0,[]}]}}},
[{distributed_helper,rpc,
[#{timeout => 30000,node => mongooseim2@localhost},
mongoose_cluster,leave,[]],
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{distributed_helper,remove_node_from_cluster,2,
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,55}]},
{persistent_cluster_id_SUITE,end_per_testcase,2,
[{file,
"/home/circleci/project/big_tests/tests/persistent_cluster_id_SUITE.erl"},
{line,108}]},
{test_server,do_end_per_testcase,4,
[{file,"test_serv... persistent_cluster_id_SUITE:rdbms:cluster_id_is_restored_to_mnesia_from_rdbms_if_mnesia_lost{error,
{{badrpc,
{'EXIT',
{{badmatch,{[{atomic,ok}],[mongooseim3@localhost]}},
[{mongoose_cluster,detach_nodes,1,
[{file,"/home/circleci/project/src/mongoose_cluster.erl"},
{line,210}]},
{mongoose_cluster,'-do_leave/0-fun-0-',0,
[{file,"/home/circleci/project/src/mongoose_cluster.erl"},
{line,52}]},
{mongoose_cluster,with_app_stopped,2,
[{file,"/home/circleci/project/src/mongoose_cluster.erl"},
{line,219}]},
{global,trans,4,[{file,"global.erl"},{line,699}]},
{mongoose_cluster,leave,0,[]}]}}},
[{distributed_helper,rpc,
[#{timeout => 30000,node => mongooseim@localhost},
mongoose_cluster,leave,[]],
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{persistent_cluster_id_SUITE,
cluster_id_is_restored_to_mnesia_from_rdbms_if_mnesia_lost,1,
[{file,
"/home/circleci/project/big_tests/tests/persistent_cluster_id_SUITE.erl"},
{line,174}]},
{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 => mongooseim3@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}]}]}} service_mongoose_system_metrics_SUITE:all_clustered_mongooses_report_the_same_client_id{failed,
{service_mongoose_system_metrics_SUITE,end_per_testcase,
{'EXIT',
{{badrpc,
{'EXIT',
{{badmatch,{[{atomic,ok}],[mongooseim3@localhost]}},
[{mongoose_cluster,detach_nodes,1,
[{file,
"/home/circleci/project/src/mongoose_cluster.erl"},
{line,210}]},
{mongoose_cluster,'-do_leave/0-fun-0-',0,
[{file,
"/home/circleci/project/src/mongoose_cluster.erl"},
{line,52}]},
{mongoose_cluster,with_app_stopped,2,
[{file,
"/home/circleci/project/src/mongoose_cluster.erl"},
{line,219}]},
{global,trans,4,[{file,"global.erl"},{line,699}]},
{mongoose_cluster,leave,0,[]}]}}},
[{distributed_helper,rpc,
[#{timeout => 30000,node => mongooseim2@localhost},
mongoose_cluster,leave,[]],
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{distributed_helper,remove_node_from_cluster,2,
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,55}]},
{service_mongoose_system_metrics_SUITE,end_per_testcase,2,
[{file,
"/home/circleci/project/big_tests/tests/service_mongoose_system_metrics_SUITE.erl"},
{line,160}]},
{test_server,do_end_per_testcase,... service_mongoose_system_metrics_SUITE:log_transparency:just_removed_from_config_logs_question{error,
{{badrpc,nodedown},
[{distributed_helper,rpc,
[#{node => mongooseim3@localhost},
mongoose_service,ensure_stopped,
[service_mongoose_system_metrics]],
[{file,
"/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
{line,140}]},
{service_mongoose_system_metrics_SUITE,disable_system_metrics,1,
[{file,
"/home/circleci/project/big_tests/tests/service_mongoose_system_metrics_SUITE.erl"},
{line,437}]},
{service_mongoose_system_metrics_SUITE,
just_removed_from_config_logs_question,1,
[{file,
"/home/circleci/project/big_tests/tests/service_mongoose_system_metrics_SUITE.erl"},
{line,283}]},
{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}]}]}} system_probes_SUITE:mnesia:mnesia_info{error,{test_case_failed,"Incorrect number of instrumentation events - matched: 0, expected: positive"}} system_probes_SUITE:end_per_suite{error,{test_case_failed,"Instrumentation events that were logged, but not tested:\n[{mnesia_info,#{}}]\nYou need to test them with instrument_helper:assert/3"}} pgsql_mnesia_27 / pgsql_mnesia / eb6c12d mysql_redis_27 / mysql_redis / eb6c12d mssql_mnesia_27 / odbc_mssql_mnesia / eb6c12d muc_SUITE:register:user_submits_registration_form_twice{error,
{{assertion_failed,assert,is_iq_result,
[{xmlel,<<"iq">>,
[{<<"type">>,<<"set">>},
{<<"id">>,<<"60416375853d7a3fbd4c2b2f2d38b7b7">>},
{<<"to">>,<<"muc.localhost">>}],
[{xmlel,<<"query">>,
[{<<"xmlns">>,<<"jabber:iq:register">>}],
[{xmlel,<<"x">>,
[{<<"xmlns">>,<<"jabber:x:data">>},
{<<"type">>,<<"submit">>}],
[{xmlel,<<"field">>,
[{<<"type">>,<<"hidden">>},
{<<"var">>,<<"FORM_TYPE">>}],
[{xmlel,<<"value">>,[],
[{xmlcdata,<<"jabber:iq:register">>}]}]},
{xmlel,<<"field">>,
[{<<"type">>,<<"text-single">>},
{<<"var">>,<<"nick">>}],
[{xmlel,<<"value">>,[],
[{xmlcdata,
<<"thirdwitchroom-2814f1341e">>}]}]}]}]}]}],
{xmlel,<<"iq">>,
[{<<"from">>,<<"muc.localhost">>},
{<<"to">>,
<<"alice_user_submits_registration_form_twice_3004@localhost/res1">>},
{<<"type">>,<<"error">>},
{<<"id">>,<<"60416375853d7a3fbd4c2b2f2d38b7b7">>}],
[{xmlel,<<"query">>,
[{<<"xmlns">>,<<"jabber:iq:register">>}],
[{xmlel,<<"x">>,
[{<<"xmlns">>,<<"jabber:x:data">>},
{<<"type">>,<<"submit">>}],
[{xmlel,<<"field">>,
[{<<"type">>,<<"hidden">>},
{<<"var">>,<<"FORM_TYPE">>}],
[{xmlel,<<"value">>,[],
... cockroachdb_cets_27 / cockroachdb_cets / eb6c12d pgsql_mnesia_26 / pgsql_mnesia / eb6c12d |
elasticsearch_and_cassandra_27 / elasticsearch_and_cassandra_mnesia / 0a6f37d small_tests_27 / small_tests / 0a6f37d small_tests_26 / small_tests / 0a6f37d small_tests_27_arm64 / small_tests / 0a6f37d ldap_mnesia_26 / ldap_mnesia / 0a6f37d ldap_mnesia_27 / ldap_mnesia / 0a6f37d dynamic_domains_mysql_redis_27 / mysql_redis / 0a6f37d dynamic_domains_pgsql_mnesia_26 / pgsql_mnesia / 0a6f37d internal_mnesia_27 / internal_mnesia / 0a6f37d pgsql_cets_27 / pgsql_cets / 0a6f37d dynamic_domains_mssql_mnesia_27 / odbc_mssql_mnesia / 0a6f37d dynamic_domains_pgsql_mnesia_27 / pgsql_mnesia / 0a6f37d bosh_SUITE:essential:accept_higher_hold_value{error,
{{assertEqual,
[{module,bosh_SUITE},
{line,261},
{expression,"get_bosh_sessions ( )"},
{expected,[]},
{value,
[{bosh_session,<<"4db605ce011aff8422fadfa82f9d912d7f284ab0">>,
<10418.10488.0>}]}]},
[{bosh_SUITE,accept_higher_hold_value,1,
[{file,"/home/circleci/project/big_tests/tests/bosh_SUITE.erl"},
{line,261}]},
{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}]}]}} mysql_redis_27 / mysql_redis / 0a6f37d pgsql_mnesia_27 / pgsql_mnesia / 0a6f37d cockroachdb_cets_27 / cockroachdb_cets / 0a6f37d pgsql_mnesia_26 / pgsql_mnesia / 0a6f37d mssql_mnesia_27 / odbc_mssql_mnesia / 0a6f37d dynamic_domains_pgsql_mnesia_27 / pgsql_mnesia / 0a6f37d |
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, nice to see it fixed 👍
I added minor comments.
src/ejabberd_app.erl
Outdated
-spec broadcast_c2s_shutdown_listeners() -> ok. | ||
broadcast_c2s_shutdown_listeners() -> | ||
-spec suspend_listeners(typed_listeners()) -> ok. | ||
suspend_listeners(TypedListeners) -> |
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.
Could we place all new functions (suspend_listeners
, get_typed_listeners
, broadcast...
etc) in a module like mongoose_listener
?
src/ejabberd_app.erl
Outdated
TypedListeners = get_typed_listeners(), | ||
suspend_listeners(TypedListeners), | ||
StoppedCount = broadcast_c2s_shutdown_sup(), | ||
StoppedCount2 = broadcast_c2s_shutdown_to_regular_c2s_connections(TypedListeners), |
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.
This block with all the functions called could be replaced with something like mongoose_listener:shutdown_listeners()
elasticsearch_and_cassandra_27 / elasticsearch_and_cassandra_mnesia / 65b773b small_tests_27 / small_tests / 65b773b small_tests_26 / small_tests / 65b773b small_tests_27_arm64 / small_tests / 65b773b ldap_mnesia_26 / ldap_mnesia / 65b773b shutdown_SUITE:main:client_tries_to_connect_before_listener_stop{error,{test_case_failed,wait_for_down_timeout}} shutdown_SUITE:main:end_per_group{error,
{{badrpc,
{'EXIT',
{badarg,
[{ets,lookup,
[mongoose_domain_core,<<"localhost">>],
[{error_info,
#{cause => id,module => erl_stdlib_errors}}]},
{mongoose_domain_core,get_host_type,1,
[{file,
"/home/circleci/project/src/domain/mongoose_domain_core.erl"},
{line,48}]},
{ejabberd_auth,call_auth_modules_for_domain,3,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,533}]},
{ejabberd_auth,does_user_exist,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,331}]},
{ejabberd_auth,remove_user,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,404}]},
{mongoose_account_api,unregister_user,1,
[{file,
"/home/circleci/project/src/mongoose_account_api.erl"},
{line,106}]},
{ejabberd_admin,unregister,2,[]}]}}},
[{escalus_rpc,call_with_cookie_match,
[mongooseim@localhost,ejabberd_admin,unregister,
[<<"geralt_s">>,<<"localhost">>],
30000,mongooseim],
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_rpc.erl"},
{line,34}]},
{lists,foreach_1,2,[{file,"lists.erl"},{line,1686}]},
{escalus_ejabberd,delete_users,2,
[{file,
... dynamic_domains_pgsql_mnesia_27 / pgsql_mnesia / 65b773b shutdown_SUITE:main:client_tries_to_connect_before_listener_stop{error,{test_case_failed,wait_for_down_timeout}} shutdown_SUITE:main:end_per_group{error,
{{badrpc,
{'EXIT',
{badarg,
[{ets,lookup,
[mongoose_domain_core,<<"domain.example.com">>],
[{error_info,
#{cause => id,module => erl_stdlib_errors}}]},
{mongoose_domain_core,get_host_type,1,
[{file,
"/home/circleci/project/src/domain/mongoose_domain_core.erl"},
{line,48}]},
{ejabberd_auth,call_auth_modules_for_domain,3,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,533}]},
{ejabberd_auth,does_user_exist,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,331}]},
{ejabberd_auth,remove_user,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,404}]},
{mongoose_account_api,unregister_user,1,
[{file,
"/home/circleci/project/src/mongoose_account_api.erl"},
{line,106}]},
{ejabberd_admin,unregister,2,[]}]}}},
[{escalus_rpc,call_with_cookie_match,
[mongooseim@localhost,ejabberd_admin,unregister,
[<<"geralt_s">>,<<"domain.example.com">>],
30000,mongooseim],
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_rpc.erl"},
{line,34}]},
{lists,foreach_1,2,[{file,"lists.erl"},{line,2310}]},
{escalus_ejabberd,delete_users,2,
... dynamic_domains_pgsql_mnesia_26 / pgsql_mnesia / 65b773b shutdown_SUITE:main:client_tries_to_connect_before_listener_stop{error,{test_case_failed,wait_for_down_timeout}} shutdown_SUITE:main:end_per_group{error,
{{badrpc,
{'EXIT',
{badarg,
[{ets,lookup,
[mongoose_domain_core,<<"domain.example.com">>],
[{error_info,
#{cause => id,module => erl_stdlib_errors}}]},
{mongoose_domain_core,get_host_type,1,
[{file,
"/home/circleci/project/src/domain/mongoose_domain_core.erl"},
{line,48}]},
{ejabberd_auth,call_auth_modules_for_domain,3,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,533}]},
{ejabberd_auth,does_user_exist,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,331}]},
{ejabberd_auth,remove_user,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,404}]},
{mongoose_account_api,unregister_user,1,
[{file,
"/home/circleci/project/src/mongoose_account_api.erl"},
{line,106}]},
{ejabberd_admin,unregister,2,[]}]}}},
[{escalus_rpc,call_with_cookie_match,
[mongooseim@localhost,ejabberd_admin,unregister,
[<<"geralt_s">>,<<"domain.example.com">>],
30000,mongooseim],
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_rpc.erl"},
{line,34}]},
{lists,foreach_1,2,[{file,"lists.erl"},{line,1686}]},
{escalus_ejabberd,delete_users,2,
... ldap_mnesia_27 / ldap_mnesia / 65b773b mod_ping_SUITE:server_ping:server_ping_pong{error,{test_case_failed,"Incorrect number of instrumentation events - matched: 0, expected: 1"}} shutdown_SUITE:main:client_tries_to_connect_before_listener_stop{error,{test_case_failed,wait_for_down_timeout}} shutdown_SUITE:main:end_per_group{error,
{{badrpc,
{'EXIT',
{badarg,
[{ets,lookup,
[mongoose_domain_core,<<"localhost">>],
[{error_info,
#{cause => id,module => erl_stdlib_errors}}]},
{mongoose_domain_core,get_host_type,1,
[{file,
"/home/circleci/project/src/domain/mongoose_domain_core.erl"},
{line,48}]},
{ejabberd_auth,call_auth_modules_for_domain,3,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,533}]},
{ejabberd_auth,does_user_exist,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,331}]},
{ejabberd_auth,remove_user,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,404}]},
{mongoose_account_api,unregister_user,1,
[{file,
"/home/circleci/project/src/mongoose_account_api.erl"},
{line,106}]},
{ejabberd_admin,unregister,2,[]}]}}},
[{escalus_rpc,call_with_cookie_match,
[mongooseim@localhost,ejabberd_admin,unregister,
[<<"geralt_s">>,<<"localhost">>],
30000,mongooseim],
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_rpc.erl"},
{line,34}]},
{lists,foreach_1,2,[{file,"lists.erl"},{line,2310}]},
{escalus_ejabberd,delete_users,2,
[{file,
... dynamic_domains_mysql_redis_27 / mysql_redis / 65b773b shutdown_SUITE:main:client_tries_to_connect_before_listener_stop{error,{test_case_failed,wait_for_down_timeout}} shutdown_SUITE:main:end_per_group{error,
{{badrpc,
{'EXIT',
{badarg,
[{ets,lookup,
[mongoose_domain_core,<<"domain.example.com">>],
[{error_info,
#{cause => id,module => erl_stdlib_errors}}]},
{mongoose_domain_core,get_host_type,1,
[{file,
"/home/circleci/project/src/domain/mongoose_domain_core.erl"},
{line,48}]},
{ejabberd_auth,call_auth_modules_for_domain,3,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,533}]},
{ejabberd_auth,does_user_exist,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,331}]},
{ejabberd_auth,remove_user,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,404}]},
{mongoose_account_api,unregister_user,1,
[{file,
"/home/circleci/project/src/mongoose_account_api.erl"},
{line,106}]},
{ejabberd_admin,unregister,2,[]}]}}},
[{escalus_rpc,call_with_cookie_match,
[mongooseim@localhost,ejabberd_admin,unregister,
[<<"geralt_s">>,<<"domain.example.com">>],
30000,mongooseim],
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_rpc.erl"},
{line,34}]},
{lists,foreach_1,2,[{file,"lists.erl"},{line,2310}]},
{escalus_ejabberd,delete_users,2,
... dynamic_domains_mssql_mnesia_27 / odbc_mssql_mnesia / 65b773b shutdown_SUITE:main:client_tries_to_connect_before_listener_stop{error,{test_case_failed,wait_for_down_timeout}} shutdown_SUITE:main:end_per_group{error,
{{badrpc,
{'EXIT',
{badarg,
[{ets,lookup,
[mongoose_domain_core,<<"domain.example.com">>],
[{error_info,
#{cause => id,module => erl_stdlib_errors}}]},
{mongoose_domain_core,get_host_type,1,
[{file,
"/home/circleci/project/src/domain/mongoose_domain_core.erl"},
{line,48}]},
{ejabberd_auth,call_auth_modules_for_domain,3,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,533}]},
{ejabberd_auth,does_user_exist,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,331}]},
{ejabberd_auth,remove_user,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,404}]},
{mongoose_account_api,unregister_user,1,
[{file,
"/home/circleci/project/src/mongoose_account_api.erl"},
{line,106}]},
{ejabberd_admin,unregister,2,[]}]}}},
[{escalus_rpc,call_with_cookie_match,
[mongooseim@localhost,ejabberd_admin,unregister,
[<<"geralt_s">>,<<"domain.example.com">>],
30000,mongooseim],
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_rpc.erl"},
{line,34}]},
{lists,foreach_1,2,[{file,"lists.erl"},{line,2310}]},
{escalus_ejabberd,delete_users,2,
... pgsql_cets_27 / pgsql_cets / 65b773b shutdown_SUITE:main:client_tries_to_connect_before_listener_stop{error,{test_case_failed,wait_for_down_timeout}} shutdown_SUITE:main:end_per_group{error,
{{badrpc,
{'EXIT',
{badarg,
[{ets,lookup,
[mongoose_domain_core,<<"localhost">>],
[{error_info,
#{cause => id,module => erl_stdlib_errors}}]},
{mongoose_domain_core,get_host_type,1,
[{file,
"/home/circleci/project/src/domain/mongoose_domain_core.erl"},
{line,48}]},
{ejabberd_auth,call_auth_modules_for_domain,3,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,533}]},
{ejabberd_auth,does_user_exist,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,331}]},
{ejabberd_auth,remove_user,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,404}]},
{mongoose_account_api,unregister_user,1,
[{file,
"/home/circleci/project/src/mongoose_account_api.erl"},
{line,106}]},
{ejabberd_admin,unregister,2,[]}]}}},
[{escalus_rpc,call_with_cookie_match,
[mongooseim@localhost,ejabberd_admin,unregister,
[<<"geralt_s">>,<<"localhost">>],
30000,mongooseim],
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_rpc.erl"},
{line,34}]},
{lists,foreach_1,2,[{file,"lists.erl"},{line,2310}]},
{escalus_ejabberd,delete_users,2,
[{file,
... internal_mnesia_27 / internal_mnesia / 65b773b shutdown_SUITE:main:client_tries_to_connect_before_listener_stop{error,{test_case_failed,wait_for_down_timeout}} shutdown_SUITE:main:end_per_group{error,
{{badrpc,
{'EXIT',
{badarg,
[{ets,lookup,
[mongoose_domain_core,<<"localhost">>],
[{error_info,
#{cause => id,module => erl_stdlib_errors}}]},
{mongoose_domain_core,get_host_type,1,
[{file,
"/home/circleci/project/src/domain/mongoose_domain_core.erl"},
{line,48}]},
{ejabberd_auth,call_auth_modules_for_domain,3,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,533}]},
{ejabberd_auth,does_user_exist,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,331}]},
{ejabberd_auth,remove_user,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,404}]},
{mongoose_account_api,unregister_user,1,
[{file,
"/home/circleci/project/src/mongoose_account_api.erl"},
{line,106}]},
{ejabberd_admin,unregister,2,[]}]}}},
[{escalus_rpc,call_with_cookie_match,
[mongooseim@localhost,ejabberd_admin,unregister,
[<<"geralt_s">>,<<"localhost">>],
30000,mongooseim],
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_rpc.erl"},
{line,34}]},
{lists,foreach_1,2,[{file,"lists.erl"},{line,2310}]},
{escalus_ejabberd,delete_users,2,
[{file,
... pgsql_mnesia_26 / pgsql_mnesia / 65b773b shutdown_SUITE:main:client_tries_to_connect_before_listener_stop{error,{test_case_failed,wait_for_down_timeout}} shutdown_SUITE:main:end_per_group{error,
{{badrpc,
{'EXIT',
{badarg,
[{ets,lookup,
[mongoose_domain_core,<<"localhost">>],
[{error_info,
#{cause => id,module => erl_stdlib_errors}}]},
{mongoose_domain_core,get_host_type,1,
[{file,
"/home/circleci/project/src/domain/mongoose_domain_core.erl"},
{line,48}]},
{ejabberd_auth,call_auth_modules_for_domain,3,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,533}]},
{ejabberd_auth,does_user_exist,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,331}]},
{ejabberd_auth,remove_user,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,404}]},
{mongoose_account_api,unregister_user,1,
[{file,
"/home/circleci/project/src/mongoose_account_api.erl"},
{line,106}]},
{ejabberd_admin,unregister,2,[]}]}}},
[{escalus_rpc,call_with_cookie_match,
[mongooseim@localhost,ejabberd_admin,unregister,
[<<"geralt_s">>,<<"localhost">>],
30000,mongooseim],
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_rpc.erl"},
{line,34}]},
{lists,foreach_1,2,[{file,"lists.erl"},{line,1686}]},
{escalus_ejabberd,delete_users,2,
[{file,
... mysql_redis_27 / mysql_redis / 65b773b shutdown_SUITE:main:client_tries_to_connect_before_listener_stop{error,{test_case_failed,wait_for_down_timeout}} shutdown_SUITE:main:end_per_group{error,
{{badrpc,
{'EXIT',
{badarg,
[{ets,lookup,
[mongoose_domain_core,<<"localhost">>],
[{error_info,
#{cause => id,module => erl_stdlib_errors}}]},
{mongoose_domain_core,get_host_type,1,
[{file,
"/home/circleci/project/src/domain/mongoose_domain_core.erl"},
{line,48}]},
{ejabberd_auth,call_auth_modules_for_domain,3,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,533}]},
{ejabberd_auth,does_user_exist,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,331}]},
{ejabberd_auth,remove_user,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,404}]},
{mongoose_account_api,unregister_user,1,
[{file,
"/home/circleci/project/src/mongoose_account_api.erl"},
{line,106}]},
{ejabberd_admin,unregister,2,[]}]}}},
[{escalus_rpc,call_with_cookie_match,
[mongooseim@localhost,ejabberd_admin,unregister,
[<<"geralt_s">>,<<"localhost">>],
30000,mongooseim],
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_rpc.erl"},
{line,34}]},
{lists,foreach_1,2,[{file,"lists.erl"},{line,2310}]},
{escalus_ejabberd,delete_users,2,
[{file,
... pgsql_mnesia_27 / pgsql_mnesia / 65b773b shutdown_SUITE:main:client_tries_to_connect_before_listener_stop{error,{test_case_failed,wait_for_down_timeout}} shutdown_SUITE:main:end_per_group{error,
{{badrpc,
{'EXIT',
{badarg,
[{ets,lookup,
[mongoose_domain_core,<<"localhost">>],
[{error_info,
#{cause => id,module => erl_stdlib_errors}}]},
{mongoose_domain_core,get_host_type,1,
[{file,
"/home/circleci/project/src/domain/mongoose_domain_core.erl"},
{line,48}]},
{ejabberd_auth,call_auth_modules_for_domain,3,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,533}]},
{ejabberd_auth,does_user_exist,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,331}]},
{ejabberd_auth,remove_user,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,404}]},
{mongoose_account_api,unregister_user,1,
[{file,
"/home/circleci/project/src/mongoose_account_api.erl"},
{line,106}]},
{ejabberd_admin,unregister,2,[]}]}}},
[{escalus_rpc,call_with_cookie_match,
[mongooseim@localhost,ejabberd_admin,unregister,
[<<"geralt_s">>,<<"localhost">>],
30000,mongooseim],
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_rpc.erl"},
{line,34}]},
{lists,foreach_1,2,[{file,"lists.erl"},{line,2310}]},
{escalus_ejabberd,delete_users,2,
[{file,
... cockroachdb_cets_27 / cockroachdb_cets / 65b773b shutdown_SUITE:main:client_tries_to_connect_before_listener_stop{error,{test_case_failed,wait_for_down_timeout}} shutdown_SUITE:main:end_per_group{error,
{{badrpc,
{'EXIT',
{badarg,
[{ets,lookup,
[mongoose_domain_core,<<"localhost">>],
[{error_info,
#{cause => id,module => erl_stdlib_errors}}]},
{mongoose_domain_core,get_host_type,1,
[{file,
"/home/circleci/project/src/domain/mongoose_domain_core.erl"},
{line,48}]},
{ejabberd_auth,call_auth_modules_for_domain,3,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,533}]},
{ejabberd_auth,does_user_exist,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,331}]},
{ejabberd_auth,remove_user,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,404}]},
{mongoose_account_api,unregister_user,1,
[{file,
"/home/circleci/project/src/mongoose_account_api.erl"},
{line,106}]},
{ejabberd_admin,unregister,2,[]}]}}},
[{escalus_rpc,call_with_cookie_match,
[mongooseim@localhost,ejabberd_admin,unregister,
[<<"geralt_s">>,<<"localhost">>],
30000,mongooseim],
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_rpc.erl"},
{line,34}]},
{lists,foreach_1,2,[{file,"lists.erl"},{line,2310}]},
{escalus_ejabberd,delete_users,2,
[{file,
... mssql_mnesia_27 / odbc_mssql_mnesia / 65b773b shutdown_SUITE:main:client_tries_to_connect_before_listener_stop{error,{test_case_failed,wait_for_down_timeout}} shutdown_SUITE:main:end_per_group{error,
{{badrpc,
{'EXIT',
{badarg,
[{ets,lookup,
[mongoose_domain_core,<<"localhost">>],
[{error_info,
#{cause => id,module => erl_stdlib_errors}}]},
{mongoose_domain_core,get_host_type,1,
[{file,
"/home/circleci/project/src/domain/mongoose_domain_core.erl"},
{line,48}]},
{ejabberd_auth,call_auth_modules_for_domain,3,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,533}]},
{ejabberd_auth,does_user_exist,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,331}]},
{ejabberd_auth,remove_user,1,
[{file,
"/home/circleci/project/src/auth/ejabberd_auth.erl"},
{line,404}]},
{mongoose_account_api,unregister_user,1,
[{file,
"/home/circleci/project/src/mongoose_account_api.erl"},
{line,106}]},
{ejabberd_admin,unregister,2,[]}]}}},
[{escalus_rpc,call_with_cookie_match,
[mongooseim@localhost,ejabberd_admin,unregister,
[<<"geralt_s">>,<<"localhost">>],
30000,mongooseim],
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_rpc.erl"},
{line,34}]},
{lists,foreach_1,2,[{file,"lists.erl"},{line,2310}]},
{escalus_ejabberd,delete_users,2,
[{file,
... |
65b773b
to
87f7bf4
Compare
elasticsearch_and_cassandra_27 / elasticsearch_and_cassandra_mnesia / 87f7bf4 small_tests_27 / small_tests / 87f7bf4 small_tests_26 / small_tests / 87f7bf4 small_tests_27_arm64 / small_tests / 87f7bf4 ldap_mnesia_26 / ldap_mnesia / 87f7bf4 ldap_mnesia_27 / ldap_mnesia / 87f7bf4 dynamic_domains_mysql_redis_27 / mysql_redis / 87f7bf4 dynamic_domains_pgsql_mnesia_26 / pgsql_mnesia / 87f7bf4 dynamic_domains_pgsql_mnesia_27 / pgsql_mnesia / 87f7bf4 internal_mnesia_27 / internal_mnesia / 87f7bf4 pgsql_cets_27 / pgsql_cets / 87f7bf4 dynamic_domains_mssql_mnesia_27 / odbc_mssql_mnesia / 87f7bf4 mysql_redis_27 / mysql_redis / 87f7bf4 pgsql_mnesia_26 / pgsql_mnesia / 87f7bf4 pgsql_mnesia_27 / pgsql_mnesia / 87f7bf4 mssql_mnesia_27 / odbc_mssql_mnesia / 87f7bf4 cockroachdb_cets_27 / cockroachdb_cets / 87f7bf4 |
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 👍
This PR addresses "MIM-2316 event_not_registered for c2s_xmpp_element_size_out when stopping the node error".
When we call
mongooseimctl stop
(and there are some websocket connections), we see this error in logs:{error,#{what => event_not_registered,labels => #{},event_name => c2s_xmpp_element_size_out} .
Code in question is this one in mongoose_listener:
So, basically it looks like there are some c2s processes alive on the node after we call tear_down. So, metric c2s_xmpp_element_size_out was there, but not here anymore.
Proposed changes include:
Try to reproduce the bug, most likely you will need websocket connections when you stop the server (or stop the listener?). - Done. Just having a websocket connection is enough.
Try to fix the bug by ensuring that there are no c2s processes after the listener is stopped. Make sure no processes could spawn up. - there was already logic for it, it was using ranch and c2s supervisor. Moving stopping based on the supervisor above before stopping the listeners fixes the issue. But there still a chance that new connections would be established. So, we 1) - disable acceptors. 2) - stop c2s processes. 3) - stop listeners completely. instead.
Global distribution:
Shutdown:
Shutdown logic now is:
Use
ranch:wait_for_connections(Ref, '==', 0)
, because it is more optimized, than just pulling a list of pids and checking its length in the loop.Ideas for future:
mongooseimctl suspend_listener
andmongooseimctl drain
commands, which could be useful for implementing graceful shutdowns in k8s or ansible scripts.