@@ -113,13 +113,22 @@ group_by_queue_and_reason(Tables) ->
113113 Grouped .
114114
115115update_x_death_header (Info , Headers ) ->
116+ X = x_death_event_key (Info , <<" exchange" >>),
116117 Q = x_death_event_key (Info , <<" queue" >>),
117118 R = x_death_event_key (Info , <<" reason" >>),
118119 case rabbit_basic :header (<<" x-death" >>, Headers ) of
119120 undefined ->
121+ % % First x-death event gets its own top-level headers.
122+ % % See rabbitmq/rabbitmq-server#1332.
123+ Headers2 = rabbit_misc :set_table_value (Headers , <<" x-first-death-reason" >>,
124+ longstr , R ),
125+ Headers3 = rabbit_misc :set_table_value (Headers2 , <<" x-first-death-queue" >>,
126+ longstr , Q ),
127+ Headers4 = rabbit_misc :set_table_value (Headers3 , <<" x-first-death-exchange" >>,
128+ longstr , X ),
120129 rabbit_basic :prepend_table_header (
121130 <<" x-death" >>,
122- [{<<" count" >>, long , 1 } | Info ], Headers );
131+ [{<<" count" >>, long , 1 } | Info ], Headers4 );
123132 {<<" x-death" >>, array , Tables } ->
124133 % % group existing x-death headers in case we have some from
125134 % % before rabbitmq-server#78
0 commit comments