Skip to content

Commit f34890e

Browse files
Merge pull request #1352 from rabbitmq/rabbitmq-server-1332
Introduce x-first-death-{queue,reason,exchange}
2 parents cfc5bde + d901ecb commit f34890e

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

src/rabbit_dead_letter.erl

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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, []);
115117
update_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

Comments
 (0)