@@ -112,14 +112,25 @@ group_by_queue_and_reason(Tables) ->
112112 end , {sets :new (), []}, Tables ),
113113 Grouped .
114114
115+ update_x_death_header (Info , undefined ) ->
116+ update_x_death_header (Info , []);
115117update_x_death_header (Info , Headers ) ->
118+ X = x_death_event_key (Info , <<" exchange" >>),
116119 Q = x_death_event_key (Info , <<" queue" >>),
117120 R = x_death_event_key (Info , <<" reason" >>),
118121 case rabbit_basic :header (<<" x-death" >>, Headers ) of
119122 undefined ->
123+ % % First x-death event gets its own top-level headers.
124+ % % See rabbitmq/rabbitmq-server#1332.
125+ Headers2 = rabbit_misc :set_table_value (Headers , <<" x-first-death-reason" >>,
126+ longstr , R ),
127+ Headers3 = rabbit_misc :set_table_value (Headers2 , <<" x-first-death-queue" >>,
128+ longstr , Q ),
129+ Headers4 = rabbit_misc :set_table_value (Headers3 , <<" x-first-death-exchange" >>,
130+ longstr , X ),
120131 rabbit_basic :prepend_table_header (
121132 <<" x-death" >>,
122- [{<<" count" >>, long , 1 } | Info ], Headers );
133+ [{<<" count" >>, long , 1 } | Info ], Headers4 );
123134 {<<" x-death" >>, array , Tables } ->
124135 % % group existing x-death headers in case we have some from
125136 % % before rabbitmq-server#78
0 commit comments