Skip to content

Commit 5d7b056

Browse files
committed
issue #15: fix crash when using lazy queues
The message properties can be either in plain text or byte encoded. It seems lazy queues prefer to use the latter. The deduplication queue was not handling encoded message properties. Therefore it was crashing when trying to fetch the message properties headers. Signed-off-by: Matteo Cafasso <[email protected]>
1 parent a0af666 commit 5d7b056

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

lib/common.ex

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ defmodule RabbitMQ.MessageDeduplicationPlugin.Common do
1616

1717
require RabbitMQ.MessageDeduplicationPlugin.Cache
1818

19+
alias :rabbit_binary_parser, as: RabbitBinaryParser
1920
alias RabbitMQ.MessageDeduplicationPlugin.Cache, as: MessageCache
2021

2122
defrecord :content, extract(
@@ -58,14 +59,13 @@ defmodule RabbitMQ.MessageDeduplicationPlugin.Common do
5859
Retrieve the given header from the message.
5960
"""
6061
@spec message_header(basic_message, String.t) :: String.t | nil
61-
def message_header(message, header) do
62-
basic_message(content: content(properties: properties)) = message
62+
def message_header(basic_message(content: message_content), header) do
63+
message_content = RabbitBinaryParser.ensure_content_decoded(message_content)
6364

64-
case properties do
65+
case content(message_content, :properties) do
6566
basic_properties(headers: headers) when is_list(headers) ->
6667
rabbit_keyfind(headers, header)
6768
basic_properties(headers: :undefined) -> nil
68-
:undefined -> nil
6969
end
7070
end
7171

0 commit comments

Comments
 (0)