Skip to content
This repository has been archived by the owner on Feb 21, 2023. It is now read-only.

Commit

Permalink
Merge pull request #723 from adamcharnock/patch-1
Browse files Browse the repository at this point in the history
Stop removing `nil` messages in stream responses
  • Loading branch information
seandstewart committed Nov 16, 2020
2 parents 057c1a8 + 0b4f295 commit 9e113e2
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 9 deletions.
1 change: 1 addition & 0 deletions CHANGES/723.bugfix
@@ -0,0 +1 @@
Reveting fix to handling of instances were Redis returns null fields for a stream message. Nil values will now be returned.
16 changes: 10 additions & 6 deletions aioredis/commands/streams.py
Expand Up @@ -31,13 +31,17 @@ def parse_messages(messages):
]
"""
if messages is None:
return []
parsed_messages = []
for message in messages:
if message is None:
# In some conditions redis will return a NIL message
parsed_messages.append((None, {}))
else:
mid, values = message
values = values or {}
parsed_messages.append((mid, fields_to_dict(values)))

messages = (message for message in messages if message is not None)
return [
(mid, fields_to_dict(values)) for mid, values in messages if values is not None
]
return parsed_messages


def parse_messages_by_stream(messages_by_stream):
Expand Down
6 changes: 3 additions & 3 deletions tests/stream_commands_test.py
Expand Up @@ -574,12 +574,12 @@ def test_parse_messages_ok():
def test_parse_messages_null_fields():
# Redis can sometimes respond with a fields value of 'null',
# so ensure we handle that sensibly
message = [(b"123", None)]
assert parse_messages(message) == []
message = [(b'123', None)]
assert parse_messages(message) == [(b'123', OrderedDict())]


def test_parse_messages_null_message():
# Redis can sometimes respond with a fields value of 'null',
# so ensure we handle that sensibly
message = [None]
assert parse_messages(message) == []
assert parse_messages(message) == [(None, OrderedDict())]

0 comments on commit 9e113e2

Please sign in to comment.