Fix MQTT -> Stream
and preserve original delivery_mode field i.e. leave it undefined if it was sent as undefined
This commit is contained in:
		
							parent
							
								
									312d2af806
								
							
						
					
					
						commit
						2ee246c3b4
					
				|  | @ -385,13 +385,16 @@ is_empty(#'v1_0.footer'{content = []}) -> | |||
| is_empty(_) -> | ||||
|     false. | ||||
| 
 | ||||
| message_annotation(_Key, #msg_body_encoded{message_annotations = []}, | ||||
|                    Default) -> | ||||
|     Default; | ||||
| message_annotation(Key, #msg_body_encoded{message_annotations = Content}, | ||||
|                    Default) | ||||
| message_annotation(Key, State, Default) | ||||
|   when is_binary(Key) -> | ||||
|     mc_util:amqp_map_get(Key, Content, Default). | ||||
|     MA = case State of | ||||
|              #msg_body_decoded{message_annotations = MA0} -> MA0; | ||||
|              #msg_body_encoded{message_annotations = MA0} -> MA0 | ||||
|          end, | ||||
|     case MA of | ||||
|         [] -> Default; | ||||
|         _ -> mc_util:amqp_map_get(Key, MA, Default) | ||||
|     end. | ||||
| 
 | ||||
| message_annotations_as_simple_map(#msg_body_encoded{message_annotations = []}) -> | ||||
|     []; | ||||
|  |  | |||
|  | @ -443,29 +443,34 @@ protocol_state(#content{properties = #'P_basic'{headers = H00, | |||
|     Priority = case Priority0 of | ||||
|                    undefined -> | ||||
|                        case Anns of | ||||
|                            #{?ANN_PRIORITY := P} -> | ||||
|                                %% This branch is hit when a message with priority was originally | ||||
|                                %% published with AMQP to a classic or quorum queue because the | ||||
|                                %% AMQP header isn't stored on disk. | ||||
|                            #{?ANN_PRIORITY := P} -> P; | ||||
|                            _ -> undefined | ||||
|                                P; | ||||
|                            _ -> | ||||
|                                undefined | ||||
|                        end; | ||||
|                    _ -> | ||||
|                        Priority0 | ||||
|                end, | ||||
|     DeliveryMode = case DeliveryMode0 of | ||||
|     DelMode = case DeliveryMode0 of | ||||
|                   undefined -> | ||||
|                            %% This branch is hit when a message was originally published with | ||||
|                            %% AMQP to a classic or quorum queue because the AMQP header isn't | ||||
|                            %% stored on disk. | ||||
|                       case Anns of | ||||
|                                #{?ANN_DURABLE := false} -> 1; | ||||
|                                _ -> 2 | ||||
|                           #{?ANN_DURABLE := false} -> | ||||
|                               %% Leave it undefined which is equivalent to 1. | ||||
|                               undefined; | ||||
|                           _ -> | ||||
|                               %% This branch is hit when a durable message was originally published | ||||
|                               %% with AMQP to a classic or quorum queue because the AMQP header isn't | ||||
|                               %% stored on disk. | ||||
|                               2 | ||||
|                       end; | ||||
|                   _ -> | ||||
|                       DeliveryMode0 | ||||
|               end, | ||||
|     B = B0#'P_basic'{headers = Headers, | ||||
|                      delivery_mode = DeliveryMode, | ||||
|                      delivery_mode = DelMode, | ||||
|                      priority = Priority, | ||||
|                      expiration = Expiration, | ||||
|                      timestamp = Timestamp}, | ||||
|  |  | |||
|  | @ -66,10 +66,10 @@ headers_no_overwrite(Config) -> | |||
| headers(Overwrite, Config) -> | ||||
|     Server = atom_to_binary(rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename)), | ||||
|     Payload = QName = atom_to_binary(?FUNCTION_NAME), | ||||
|     NowSecs = os:system_time(second), | ||||
|     NowMs = os:system_time(millisecond), | ||||
|     Ch = rabbit_ct_client_helpers:open_channel(Config), | ||||
|     #'queue.declare_ok'{} = amqp_channel:call(Ch, #'queue.declare'{queue = QName}), | ||||
|     NowSecs = os:system_time(second), | ||||
|     NowMs = os:system_time(millisecond), | ||||
|     amqp_channel:call(Ch, #'basic.publish'{routing_key = QName}, | ||||
|                       #amqp_msg{payload = Payload}), | ||||
|     AssertHeaders = | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue