diff --git a/mk/rabbitmq-components.mk b/mk/rabbitmq-components.mk index 4d610020..c82ba0ba 100644 --- a/mk/rabbitmq-components.mk +++ b/mk/rabbitmq-components.mk @@ -44,6 +44,7 @@ dep_rabbitmq_event_exchange = git_rmq rabbitmq-event-exchange $(curren dep_rabbitmq_federation = git_rmq rabbitmq-federation $(current_rmq_ref) $(base_rmq_ref) master dep_rabbitmq_federation_management = git_rmq rabbitmq-federation-management $(current_rmq_ref) $(base_rmq_ref) master dep_rabbitmq_java_client = git_rmq rabbitmq-java-client $(current_rmq_ref) $(base_rmq_ref) master +dep_rabbitmq_jms_client = git_rmq rabbitmq-jms-client $(current_rmq_ref) $(base_rmq_ref) master dep_rabbitmq_jms_topic_exchange = git_rmq rabbitmq-jms-topic-exchange $(current_rmq_ref) $(base_rmq_ref) master dep_rabbitmq_lvc = git_rmq rabbitmq-lvc-plugin $(current_rmq_ref) $(base_rmq_ref) master dep_rabbitmq_management = git_rmq rabbitmq-management $(current_rmq_ref) $(base_rmq_ref) master diff --git a/src/rabbit_channel.erl b/src/rabbit_channel.erl index a93687bb..7082863d 100644 --- a/src/rabbit_channel.erl +++ b/src/rabbit_channel.erl @@ -2003,8 +2003,7 @@ i(global_prefetch_count, #ch{limiter = Limiter}) -> i(interceptors, #ch{interceptor_state = IState}) -> IState; i(garbage_collection, _State) -> - {garbage_collection, GC} = erlang:process_info(self(), garbage_collection), - GC; + rabbit_misc:get_gc_info(self()); i(reductions, _State) -> {reductions, Reductions} = erlang:process_info(self(), reductions), Reductions; diff --git a/src/rabbit_control_misc.erl b/src/rabbit_control_misc.erl index bafe5630..2a1501f4 100644 --- a/src/rabbit_control_misc.erl +++ b/src/rabbit_control_misc.erl @@ -183,4 +183,5 @@ notify_if_timeout(_, _, infinity) -> notify_if_timeout(Pid, Ref, Timeout) -> timer:send_after(Timeout, Pid, {Ref, {timeout, Timeout}}). -print_cmd_result(authenticate_user, _Result) -> io:format("Success~n"). +print_cmd_result(authenticate_user, _Result) -> io:format("Success~n"); +print_cmd_result(join_cluster, already_member) -> io:format("The node is already a member of this cluster~n"). diff --git a/src/rabbit_ct_broker_helpers.erl b/src/rabbit_ct_broker_helpers.erl index 4ce8c89e..1e100dfa 100644 --- a/src/rabbit_ct_broker_helpers.erl +++ b/src/rabbit_ct_broker_helpers.erl @@ -100,6 +100,9 @@ tcp_port_erlang_dist, tcp_port_erlang_dist_proxy, tcp_port_mqtt, + tcp_port_mqtt_tls, + tcp_port_stomp, + tcp_port_stomp_tls, tcp_port_web_mqtt ]). @@ -289,10 +292,22 @@ update_tcp_ports_in_rmq_config(NodeConfig, [tcp_port_mqtt = Key | Rest]) -> NodeConfig1 = rabbit_ct_helpers:merge_app_env(NodeConfig, {rabbitmq_mqtt, [{tcp_listeners, [?config(Key, NodeConfig)]}]}), update_tcp_ports_in_rmq_config(NodeConfig1, Rest); +update_tcp_ports_in_rmq_config(NodeConfig, [tcp_port_mqtt_tls = Key | Rest]) -> + NodeConfig1 = rabbit_ct_helpers:merge_app_env(NodeConfig, + {rabbitmq_mqtt, [{ssl_listeners, [?config(Key, NodeConfig)]}]}), + update_tcp_ports_in_rmq_config(NodeConfig1, Rest); update_tcp_ports_in_rmq_config(NodeConfig, [tcp_port_web_mqtt = Key | Rest]) -> NodeConfig1 = rabbit_ct_helpers:merge_app_env(NodeConfig, {rabbitmq_web_mqtt, [{tcp_config, [{port, ?config(Key, NodeConfig)}]}]}), update_tcp_ports_in_rmq_config(NodeConfig1, Rest); +update_tcp_ports_in_rmq_config(NodeConfig, [tcp_port_stomp = Key | Rest]) -> + NodeConfig1 = rabbit_ct_helpers:merge_app_env(NodeConfig, + {rabbitmq_stomp, [{tcp_listeners, [?config(Key, NodeConfig)]}]}), + update_tcp_ports_in_rmq_config(NodeConfig1, Rest); +update_tcp_ports_in_rmq_config(NodeConfig, [tcp_port_stomp_tls = Key | Rest]) -> + NodeConfig1 = rabbit_ct_helpers:merge_app_env(NodeConfig, + {rabbitmq_stomp, [{ssl_listeners, [?config(Key, NodeConfig)]}]}), + update_tcp_ports_in_rmq_config(NodeConfig1, Rest); update_tcp_ports_in_rmq_config(NodeConfig, [tcp_port_erlang_dist | Rest]) -> %% The Erlang distribution port doesn't appear in the configuration file. update_tcp_ports_in_rmq_config(NodeConfig, Rest); diff --git a/src/rabbit_ct_helpers.erl b/src/rabbit_ct_helpers.erl index 2b7eb74e..3da9b526 100644 --- a/src/rabbit_ct_helpers.erl +++ b/src/rabbit_ct_helpers.erl @@ -240,8 +240,9 @@ ensure_ssl_certs(Config) -> CertsMakeDir = filename:join([SrcDir, "tools", "tls-certs"]), PrivDir = ?config(priv_dir, Config), CertsDir = filename:join(PrivDir, "certs"), + CertsPwd = proplists:get_value(rmq_certspwd, Config, ?SSL_CERT_PASSWORD), Cmd = [ - "PASSWORD=" ++ ?SSL_CERT_PASSWORD, + "PASSWORD=" ++ CertsPwd, "DIR=" ++ CertsDir], case make(Config, CertsMakeDir, Cmd) of {ok, _} -> diff --git a/src/rabbit_misc.erl b/src/rabbit_misc.erl index d7eebc95..26ba7f06 100644 --- a/src/rabbit_misc.erl +++ b/src/rabbit_misc.erl @@ -77,6 +77,7 @@ -export([random/1]). -export([rpc_call/4, rpc_call/5]). -export([report_default_thread_pool_size/0]). +-export([get_gc_info/1]). %% Horrible macro to use in guards -define(IS_BENIGN_EXIT(R), @@ -263,6 +264,7 @@ -spec rpc_call(node(), atom(), atom(), [any()]) -> any(). -spec rpc_call(node(), atom(), atom(), [any()], number()) -> any(). -spec report_default_thread_pool_size() -> 'ok'. +-spec get_gc_info(pid()) -> integer(). %%---------------------------------------------------------------------------- @@ -1189,6 +1191,18 @@ report_default_thread_pool_size() -> erlang:halt(0), ok. +get_gc_info(Pid) -> + {garbage_collection, GC} = erlang:process_info(Pid, garbage_collection), + case proplists:get_value(max_heap_size, GC) of + I when is_integer(I) -> + GC; + undefined -> + GC; + Map -> + lists:keyreplace(max_heap_size, 1, GC, + {max_heap_size, maps:get(size, Map)}) + end. + %% ------------------------------------------------------------------------- %% Begin copypasta from gen_server2.erl diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl index 1ae05ccf..2ce858b7 100644 --- a/src/rabbit_reader.erl +++ b/src/rabbit_reader.erl @@ -1397,8 +1397,7 @@ i(state, #v1{connection_state = ConnectionState, end end; i(garbage_collection, _State) -> - {garbage_collection, GC} = erlang:process_info(self(), garbage_collection), - GC; + rabbit_misc:get_gc_info(self()); i(reductions, _State) -> {reductions, Reductions} = erlang:process_info(self(), reductions), Reductions;