Skip to content

Commit 48f76d7

Browse files
authored
Merge pull request #1272 from braze-inc/pipeline-multi-getall-not-hash
[master] Fix response of `multi` in `pipelined` for #1271
2 parents bdb8341 + b1e5810 commit 48f76d7

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

lib/redis/pipeline.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,14 @@ def initialize(futures)
118118
end
119119

120120
def _set(replies)
121-
if replies
122-
@futures.each_with_index do |future, index|
121+
@object = if replies
122+
@futures.map.with_index do |future, index|
123123
future._set(replies[index])
124+
future.value
124125
end
126+
else
127+
replies
125128
end
126-
@object = replies
127129
end
128130
end
129131
end

test/redis/pipelining_commands_test.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,23 @@ def test_zpopmax_in_a_pipeline_produces_future
239239
assert_equal ["value", 1.0], future.value
240240
end
241241

242+
def test_hgetall_in_a_multi_in_a_pipeline_returns_hash
243+
future = nil
244+
result = r.pipelined do |p|
245+
p.multi do |m|
246+
m.hmset("hash", "field", "value", "field2", "value2")
247+
future = m.hgetall("hash")
248+
end
249+
end
250+
251+
if Gem::Version.new(Redis::VERSION) > Gem::Version.new("4.8")
252+
result = result.last
253+
end
254+
255+
assert_equal({ "field" => "value", "field2" => "value2" }, result.last)
256+
assert_equal({ "field" => "value", "field2" => "value2" }, future.value)
257+
end
258+
242259
def test_keys_in_a_pipeline
243260
r.set("key", "value")
244261
result = r.pipelined do |p|

0 commit comments

Comments
 (0)