Federation supervisor crash during upgrade to 4.2.x on multi-node cluster #15239
Unanswered
gomoripeti
asked this question in
Other
Replies: 1 comment 1 reply
-
|
@gomoripeti the proposed change looks acceptable to me. If we want to include it, we must do it early next week because |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Community Support Policy
RabbitMQ version used
4.2.x
How is RabbitMQ deployed?
Debian package
Steps to reproduce the behavior in question
Supervisor
rabbit_federation_exchange_link_sup_supcrashes with the following crash and is not running any morefull crash log
``` <0.533.0> rabbit on node 'rabbit@host-03' down <0.748.0> supervisor: {local,rabbit_federation_exchange_link_sup_sup} <0.748.0> errorContext: child_terminated <0.748.0> reason: {shutdown, <0.748.0> [{{'EXIT', <0.748.0> {undef, <0.748.0> [{rabbit_federation_link_sup,start_link, <0.748.0> [{exchange, <0.748.0> {resource,<<"vhost1">>,exchange,<<"fed_ex3">>}, <0.748.0> fanout,true,false,false,[],undefined, <0.748.0> [{vhost,<<"vhost1">>}, <0.748.0> {name,<<"fed_on_upgrade_policy">>}, <0.748.0> {pattern,<<"^fed_.*$">>}, <0.748.0> {'apply-to',<<"all">>}, <0.748.0> {definition, <0.748.0> [{<<"federation-upstream">>,<<"fed_upstream">>}]}, <0.748.0> {priority,2}], <0.748.0> undefined, <0.748.0> {[], <0.748.0> [rabbit_federation_exchange, <0.748.0> rabbit_event_exchange_decorator]}, <0.748.0> #{user => <<"vhost1">>}}], <0.748.0> []}, <0.748.0> {supervisor2,do_start_child_i,3, <0.748.0> [{file,"supervisor2.erl"},{line,441}]}, <0.748.0> {supervisor2,do_start_child,2, <0.748.0> [{file,"supervisor2.erl"},{line,427}]}, <0.748.0> {supervisor2,handle_start_child,2, <0.748.0> [{file,"supervisor2.erl"},{line,750}]}, <0.748.0> {supervisor2,handle_call,3, <0.748.0> [{file,"supervisor2.erl"},{line,482}]}, <0.748.0> {gen_server,try_handle_call,4, <0.748.0> [{file,"gen_server.erl"},{line,2470}]}, <0.748.0> {gen_server,handle_msg,3, <0.748.0> [{file,"gen_server.erl"},{line,2499}]}, <0.748.0> {proc_lib,init_p_do_apply,3, <0.748.0> [{file,"proc_lib.erl"},{line,333}]}]}}, <0.748.0> {child,undefined, <0.748.0> {exchange, <0.748.0> {resource,<<"vhost1">>,exchange,<<"fed_ex3">>}, <0.748.0> fanout,true,false,false,[],none, <0.748.0> [{vhost,<<"vhost1">>}, <0.748.0> {name,<<"fed_on_upgrade_policy">>}, <0.748.0> {pattern,<<"^fed_.*$">>}, <0.748.0> {'apply-to',<<"all">>}, <0.748.0> {definition, <0.748.0> [{<<"federation-upstream">>,<<"fed_upstream">>}]}, <0.748.0> {priority,2}], <0.748.0> undefined,none, <0.748.0> #{user => <<"vhost1">>}}, <0.748.0> {rabbit_federation_link_sup,start_link, <0.748.0> [{exchange, <0.748.0> {resource,<<"vhost1">>,exchange,<<"fed_ex3">>}, <0.748.0> fanout,true,false,false,[],undefined, <0.748.0> [{vhost,<<"vhost1">>}, <0.748.0> {name,<<"fed_on_upgrade_policy">>}, <0.748.0> {pattern,<<"^fed_.*$">>}, <0.748.0> {'apply-to',<<"all">>}, <0.748.0> {definition, <0.748.0> [{<<"federation-upstream">>,<<"fed_upstream">>}]}, <0.748.0> {priority,2}], <0.748.0> undefined, <0.748.0> {[], <0.748.0> [rabbit_federation_exchange, <0.748.0> rabbit_event_exchange_decorator]}, <0.748.0> #{user => <<"vhost1">>}}]}, <0.748.0> transient,infinity,supervisor, <0.748.0> [rabbit_federation_link_sup]}}, <0.748.0> {{'EXIT', <0.748.0> {undef, <0.748.0> [{rabbit_federation_link_sup,start_link, <0.748.0> [{exchange, <0.748.0> {resource,<<"vhost1">>,exchange,<<"fed_ex2">>}, <0.748.0> fanout,true,false,false,[],undefined, <0.748.0> [{vhost,<<"vhost1">>}, <0.748.0> {name,<<"fed_on_upgrade_policy">>}, <0.748.0> {pattern,<<"^fed_.*$">>}, <0.748.0> {'apply-to',<<"all">>}, <0.748.0> {definition, <0.748.0> [{<<"federation-upstream">>,<<"fed_upstream">>}]}, <0.748.0> {priority,2}], <0.748.0> undefined, <0.748.0> {[], <0.748.0> [rabbit_federation_exchange, <0.748.0> rabbit_event_exchange_decorator]}, <0.748.0> #{user => <<"vhost1">>}}], <0.748.0> []}, <0.748.0> {supervisor2,do_start_child_i,3, <0.748.0> [{file,"supervisor2.erl"},{line,441}]}, <0.748.0> {supervisor2,do_start_child,2, <0.748.0> [{file,"supervisor2.erl"},{line,427}]}, <0.748.0> {supervisor2,handle_start_child,2, <0.748.0> [{file,"supervisor2.erl"},{line,750}]}, <0.748.0> {supervisor2,handle_call,3, <0.748.0> [{file,"supervisor2.erl"},{line,482}]}, <0.748.0> {gen_server,try_handle_call,4, <0.748.0> [{file,"gen_server.erl"},{line,2470}]}, <0.748.0> {gen_server,handle_msg,3, <0.748.0> [{file,"gen_server.erl"},{line,2499}]}, <0.748.0> {proc_lib,init_p_do_apply,3, <0.748.0> [{file,"proc_lib.erl"},{line,333}]}]}}, <0.748.0> {child,undefined, <0.748.0> {exchange, <0.748.0> {resource,<<"vhost1">>,exchange,<<"fed_ex2">>}, <0.748.0> fanout,true,false,false,[],none, <0.748.0> [{vhost,<<"vhost1">>}, <0.748.0> {name,<<"fed_on_upgrade_policy">>}, <0.748.0> {pattern,<<"^fed_.*$">>}, <0.748.0> {'apply-to',<<"all">>}, <0.748.0> {definition, <0.748.0> [{<<"federation-upstream">>,<<"fed_upstream">>}]}, <0.748.0> {priority,2}], <0.748.0> undefined,none, <0.748.0> #{user => <<"vhost1">>}}, <0.748.0> {rabbit_federation_link_sup,start_link, <0.748.0> [{exchange, <0.748.0> {resource,<<"vhost1">>,exchange,<<"fed_ex2">>}, <0.748.0> fanout,true,false,false,[],undefined, <0.748.0> [{vhost,<<"vhost1">>}, <0.748.0> {name,<<"fed_on_upgrade_policy">>}, <0.748.0> {pattern,<<"^fed_.*$">>}, <0.748.0> {'apply-to',<<"all">>}, <0.748.0> {definition, <0.748.0> [{<<"federation-upstream">>,<<"fed_upstream">>}]}, <0.748.0> {priority,2}], <0.748.0> undefined, <0.748.0> {[], <0.748.0> [rabbit_federation_exchange, <0.748.0> rabbit_event_exchange_decorator]}, <0.748.0> #{user => <<"vhost1">>}}]}, <0.748.0> transient,infinity,supervisor, <0.748.0> [rabbit_federation_link_sup]}}, <0.748.0> {{'EXIT', <0.748.0> {undef, <0.748.0> [{rabbit_federation_link_sup,start_link, <0.748.0> [{exchange, <0.748.0> {resource,<<"vhost1">>,exchange,<<"fed_ex">>}, <0.748.0> fanout,true,false,false,[],undefined, <0.748.0> [{vhost,<<"vhost1">>}, <0.748.0> {name,<<"fed_on_upgrade_policy">>}, <0.748.0> {pattern,<<"^fed_.*$">>}, <0.748.0> {'apply-to',<<"all">>}, <0.748.0> {definition, <0.748.0> [{<<"federation-upstream">>,<<"fed_upstream">>}]}, <0.748.0> {priority,2}], <0.748.0> undefined, <0.748.0> {[], <0.748.0> [rabbit_federation_exchange, <0.748.0> rabbit_event_exchange_decorator]}, <0.748.0> #{user => <<"vhost1">>}}], <0.748.0> []}, <0.748.0> {supervisor2,do_start_child_i,3, <0.748.0> [{file,"supervisor2.erl"},{line,441}]}, <0.748.0> {supervisor2,do_start_child,2, <0.748.0> [{file,"supervisor2.erl"},{line,427}]}, <0.748.0> {supervisor2,handle_start_child,2, <0.748.0> [{file,"supervisor2.erl"},{line,750}]}, <0.748.0> {supervisor2,handle_call,3, <0.748.0> [{file,"supervisor2.erl"},{line,482}]}, <0.748.0> {gen_server,try_handle_call,4, <0.748.0> [{file,"gen_server.erl"},{line,2470}]}, <0.748.0> {gen_server,handle_msg,3, <0.748.0> [{file,"gen_server.erl"},{line,2499}]}, <0.748.0> {proc_lib,init_p_do_apply,3, <0.748.0> [{file,"proc_lib.erl"},{line,333}]}]}}, <0.748.0> {child,undefined, <0.748.0> {exchange, <0.748.0> {resource,<<"vhost1">>,exchange,<<"fed_ex">>}, <0.748.0> fanout,true,false,false,[],none, <0.748.0> [{vhost,<<"vhost1">>}, <0.748.0> {name,<<"fed_on_upgrade_policy">>}, <0.748.0> {pattern,<<"^fed_.*$">>}, <0.748.0> {'apply-to',<<"all">>}, <0.748.0> {definition, <0.748.0> [{<<"federation-upstream">>,<<"fed_upstream">>}]}, <0.748.0> {priority,2}], <0.748.0> undefined,none, <0.748.0> #{user => <<"vhost1">>}}, <0.748.0> {rabbit_federation_link_sup,start_link, <0.748.0> [{exchange, <0.748.0> {resource,<<"vhost1">>,exchange,<<"fed_ex">>}, <0.748.0> fanout,true,false,false,[],undefined, <0.748.0> [{vhost,<<"vhost1">>}, <0.748.0> {name,<<"fed_on_upgrade_policy">>}, <0.748.0> {pattern,<<"^fed_.*$">>}, <0.748.0> {'apply-to',<<"all">>}, <0.748.0> {definition, <0.748.0> [{<<"federation-upstream">>,<<"fed_upstream">>}]}, <0.748.0> {priority,2}], <0.748.0> undefined, <0.748.0> {[], <0.748.0> [rabbit_federation_exchange, <0.748.0> rabbit_event_exchange_decorator]}, <0.748.0> #{user => <<"vhost1">>}}]}, <0.748.0> transient,infinity,supervisor, <0.748.0> [rabbit_federation_link_sup]}}]} <0.748.0> offender: [{pid,<0.750.0>}, <0.748.0> {id,mirroring}, <0.748.0> {mfargs, <0.748.0> {mirrored_supervisor,start_internal, <0.748.0> [rabbit_federation_exchange_link_sup_sup,[]]}}, <0.748.0> {restart_type,permanent}, <0.748.0> {shutdown,4294967295}, <0.748.0> {child_type,worker}] <0.748.0> supervisor: {local,rabbit_federation_exchange_link_sup_sup} <0.748.0> errorContext: shutdown <0.748.0> reason: reached_max_restart_intensity <0.748.0> offender: [{pid,<0.750.0>}, <0.748.0> {id,mirroring}, <0.748.0> {mfargs, <0.748.0> {mirrored_supervisor,start_internal, <0.748.0> [rabbit_federation_exchange_link_sup_sup,[]]}}, <0.748.0> {restart_type,permanent}, <0.748.0> {shutdown,4294967295}, <0.748.0> {child_type,worker}] ```This is because
rabbit_federation_link_sup:start_linkhad arity 1 until 4.1.x. PR #13921 converted it to arity 2 (https://github.com/rabbitmq/rabbitmq-server/pull/13921/changes#diff-331ecadea9665c8db269b5f30f87851eddeb09b6968ec5daeae0c34355cbd4fbR39). But in a mixed version cluster the mirrored supervisor preserves the child definitions which still include a call with arity 1 (without the link module).Maybe adding a compatibility
start_link/1would solve this?Beta Was this translation helpful? Give feedback.
All reactions