Capture and log crashes on the stream coordinator machine
This commit is contained in:
		
							parent
							
								
									b5ed4e7ca1
								
							
						
					
					
						commit
						eabdd8cdc1
					
				|  | @ -842,7 +842,18 @@ make_ra_conf(Node, Nodes) -> | |||
|       ra_event_formatter => Formatter}. | ||||
| 
 | ||||
| 
 | ||||
| update_stream(#{system_time := _} = Meta, | ||||
| update_stream(Meta, Cmd, Stream) -> | ||||
|     try | ||||
|         update_stream0(Meta, Cmd, Stream) | ||||
|     catch | ||||
|         _:E:Stacktrace -> | ||||
|             rabbit_log:warning( | ||||
|               "~s failed to update stream:~n~p~n~p", | ||||
|               [?MODULE, E, Stacktrace]), | ||||
|             Stream | ||||
|     end. | ||||
| 
 | ||||
| update_stream0(#{system_time := _} = Meta, | ||||
|                {new_stream, StreamId, #{leader_node := LeaderNode, | ||||
|                                         queue := Q}}, undefined) -> | ||||
|     #{nodes := Nodes} = Conf = amqqueue:get_type_state(Q), | ||||
|  | @ -867,7 +878,7 @@ update_stream(#{system_time := _} = Meta, | |||
|             conf = Conf, | ||||
|             members = Members, | ||||
|             reply_to = maps:get(from, Meta, undefined)}; | ||||
| update_stream(#{system_time := _Ts} = _Meta, | ||||
| update_stream0(#{system_time := _Ts} = _Meta, | ||||
|                {delete_stream, _StreamId, #{}}, | ||||
|                #stream{members = Members0, | ||||
|                        target = _} = Stream0) -> | ||||
|  | @ -878,7 +889,7 @@ update_stream(#{system_time := _Ts} = _Meta, | |||
|     Stream0#stream{members = Members, | ||||
|                    % reply_to = maps:get(from, Meta, undefined), | ||||
|                    target = deleted}; | ||||
| update_stream(#{system_time := _Ts} = _Meta, | ||||
| update_stream0(#{system_time := _Ts} = _Meta, | ||||
|                {add_replica, _StreamId, #{node := Node}}, | ||||
|                #stream{members = Members0, | ||||
|                        epoch = Epoch, | ||||
|  | @ -895,7 +906,7 @@ update_stream(#{system_time := _Ts} = _Meta, | |||
|             Stream0#stream{members = Members, | ||||
|                            nodes = lists:sort([Node | Nodes])} | ||||
|     end; | ||||
| update_stream(#{system_time := _Ts} = _Meta, | ||||
| update_stream0(#{system_time := _Ts} = _Meta, | ||||
|                {delete_replica, _StreamId, #{node := Node}}, | ||||
|                #stream{members = Members0, | ||||
|                        epoch = _Epoch, | ||||
|  | @ -917,7 +928,7 @@ update_stream(#{system_time := _Ts} = _Meta, | |||
|         false -> | ||||
|             Stream0 | ||||
|     end; | ||||
| update_stream(#{system_time := _Ts}, | ||||
| update_stream0(#{system_time := _Ts}, | ||||
|                {member_started, _StreamId, | ||||
|                 #{epoch := E, | ||||
|                   index := Idx, | ||||
|  | @ -942,7 +953,7 @@ update_stream(#{system_time := _Ts}, | |||
|                                [?MODULE, Args, Member]), | ||||
|             Stream0 | ||||
|     end; | ||||
| update_stream(#{system_time := _Ts}, | ||||
| update_stream0(#{system_time := _Ts}, | ||||
|                {member_deleted, _StreamId, #{node := Node}}, | ||||
|                #stream{nodes = Nodes, | ||||
|                        members = Members0} = Stream0) -> | ||||
|  | @ -959,7 +970,7 @@ update_stream(#{system_time := _Ts}, | |||
|             %% epochs? | ||||
|             Stream0 | ||||
|     end; | ||||
| update_stream(#{system_time := _Ts}, | ||||
| update_stream0(#{system_time := _Ts}, | ||||
|                {member_stopped, _StreamId, | ||||
|                 #{node := Node, | ||||
|                   index := Idx, | ||||
|  | @ -1046,7 +1057,7 @@ update_stream(#{system_time := _Ts}, | |||
|         _Member -> | ||||
|             Stream0 | ||||
|     end; | ||||
| update_stream(#{system_time := _Ts}, | ||||
| update_stream0(#{system_time := _Ts}, | ||||
|                {mnesia_updated, _StreamId, #{epoch := E}}, | ||||
|                Stream0) -> | ||||
|     %% reset mnesia state | ||||
|  | @ -1056,7 +1067,7 @@ update_stream(#{system_time := _Ts}, | |||
|         _ -> | ||||
|             Stream0#stream{mnesia = {updated, E}} | ||||
|     end; | ||||
| update_stream(#{system_time := _Ts}, | ||||
| update_stream0(#{system_time := _Ts}, | ||||
|                {retention_updated, _StreamId, #{node := Node}}, | ||||
|                #stream{members = Members0, | ||||
|                        conf = Conf} = Stream0) -> | ||||
|  | @ -1065,11 +1076,11 @@ update_stream(#{system_time := _Ts}, | |||
|                                                       conf = Conf} | ||||
|                                      end, Members0), | ||||
|     Stream0#stream{members = Members}; | ||||
| update_stream(#{system_time := _Ts}, | ||||
| update_stream0(#{system_time := _Ts}, | ||||
|                {action_failed, _StreamId, #{action := updating_mnesia}}, | ||||
|                #stream{mnesia = {_, E}} = Stream0) -> | ||||
|     Stream0#stream{mnesia = {updated, E}}; | ||||
| update_stream(#{system_time := _Ts}, | ||||
| update_stream0(#{system_time := _Ts}, | ||||
|                {action_failed, _StreamId, | ||||
|                 #{node := Node, | ||||
|                   index := Idx, | ||||
|  | @ -1094,7 +1105,7 @@ update_stream(#{system_time := _Ts}, | |||
|         _ -> | ||||
|             Stream0#stream{members = Members1} | ||||
|     end; | ||||
| update_stream(#{system_time := _Ts}, | ||||
| update_stream0(#{system_time := _Ts}, | ||||
|                {down, Pid, Reason}, | ||||
|                #stream{epoch = E, | ||||
|                        members = Members0} = Stream0) -> | ||||
|  | @ -1128,10 +1139,10 @@ update_stream(#{system_time := _Ts}, | |||
|         _ -> | ||||
|             Stream0 | ||||
|     end; | ||||
| update_stream(#{system_time := _Ts}, | ||||
| update_stream0(#{system_time := _Ts}, | ||||
|                {down, _Pid, _Reason}, undefined) -> | ||||
|     undefined; | ||||
| update_stream(#{system_time := _Ts} = _Meta, | ||||
| update_stream0(#{system_time := _Ts} = _Meta, | ||||
|                {nodeup, Node}, | ||||
|                #stream{members = Members0} = Stream0) -> | ||||
|     Members = maps:map( | ||||
|  | @ -1143,13 +1154,13 @@ update_stream(#{system_time := _Ts} = _Meta, | |||
|                         M | ||||
|                 end, Members0), | ||||
|     Stream0#stream{members = Members}; | ||||
| update_stream(#{system_time := _Ts}, | ||||
| update_stream0(#{system_time := _Ts}, | ||||
|                {policy_changed, _StreamId, #{queue := Q}}, | ||||
|                #stream{conf = Conf0, | ||||
|                        members = _Members0} = Stream0) -> | ||||
|     Conf = rabbit_stream_queue:update_stream_conf(Q, Conf0), | ||||
|     Stream0#stream{conf = Conf}; | ||||
| update_stream(_Meta, _Cmd, undefined) -> | ||||
| update_stream0(_Meta, _Cmd, undefined) -> | ||||
|     undefined. | ||||
| 
 | ||||
| eval_listeners(#stream{listeners = Listeners0, | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue