Skip to content

Commit 97742e0

Browse files
authored
Merge pull request #1022 from godric/master
Improve empty stream responses deserialization
2 parents 5dd7df9 + 2e85516 commit 97742e0

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

lib/redis.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3518,7 +3518,7 @@ def method_missing(command, *args) # rubocop:disable Style/MissingRespondToMissi
35183518

35193519
HashifyStreamEntries = lambda { |reply|
35203520
reply.compact.map do |entry_id, values|
3521-
[entry_id, values.each_slice(2).to_h]
3521+
[entry_id, values&.each_slice(2)&.to_h]
35223522
end
35233523
}
35243524

test/lint/streams.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,17 @@ def test_xreadgroup_with_invalid_arguments
491491
assert_raises(Redis::CommandError) { redis.xreadgroup('g1', 'c1', 's1', %w[> >]) }
492492
end
493493

494+
def test_xreadgroup_a_trimmed_entry
495+
redis.xgroup(:create, 'k1', 'g1', '0', mkstream: true)
496+
entry_id = redis.xadd('k1', { value: 'v1' })
497+
498+
assert_equal({ 'k1' => [[entry_id, { 'value' => 'v1' }]] }, redis.xreadgroup('g1', 'c1', 'k1', '>'))
499+
assert_equal({ 'k1' => [[entry_id, { 'value' => 'v1' }]] }, redis.xreadgroup('g1', 'c1', 'k1', '0'))
500+
redis.xtrim('k1', 0)
501+
502+
assert_equal({ 'k1' => [[entry_id, nil]] }, redis.xreadgroup('g1', 'c1', 'k1', '0'))
503+
end
504+
494505
def test_xack_with_a_entry_id
495506
redis.xadd('s1', { f: 'v1' }, id: '0-1')
496507
redis.xgroup(:create, 's1', 'g1', '$')

0 commit comments

Comments
 (0)