diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_dead_letter.erl | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/rabbit_dead_letter.erl b/src/rabbit_dead_letter.erl index 479c8a316f..8d426f072a 100644 --- a/src/rabbit_dead_letter.erl +++ b/src/rabbit_dead_letter.erl @@ -141,11 +141,14 @@ update_x_death_header(Info, Headers) -> Headers, <<"x-death">>, array, [{table, rabbit_misc:sort_field_table(Info1)} | Others]); {<<"x-death">>, InvalidType, Header} -> - rabbit_log:warning("Death Invalid x-death header type: ~p." - " Ignoring header ~p~n", + rabbit_log:warning("Message has invalid x-death header (type: ~p)." + " Resetting header ~p~n", [InvalidType, Header]), - %% If x-death field type is invalid it is ignored - %% and new array is created + %% if x-death is something other than an array (list) + %% then we reset it: this happens when some clients consume + %% a message and re-publish is, converting header values + %% to strings, intentionally or not. + %% See rabbitmq/rabbitmq-server#767 for details. rabbit_misc:set_table_value( Headers, <<"x-death">>, array, [{table, [{<<"count">>, long, 1} | Info]}]) |
