Skip to content

Commit d125268

Browse files
jdeppe-pivotalmp911de
authored andcommitted
Invoke correct BZPOPMAX method when called with a Duration.
`ZSetOperations.popMax(K key, Duration timeout)` now calls `popMax` instead the previously incorrect method `popMin`. Closes #2323
1 parent da9a0e0 commit d125268

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

src/main/java/org/springframework/data/redis/core/ZSetOperations.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,7 @@ default TypedTuple<V> popMax(K key, Duration timeout) {
525525
Assert.notNull(timeout, "Timeout must not be null");
526526
Assert.isTrue(!timeout.isNegative(), "Timeout must not be negative");
527527

528-
return popMin(key, TimeoutUtils.toSeconds(timeout), TimeUnit.SECONDS);
528+
return popMax(key, TimeoutUtils.toSeconds(timeout), TimeUnit.SECONDS);
529529
}
530530

531531
/**

src/test/java/org/springframework/data/redis/core/DefaultZSetOperationsIntegrationTests.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import static org.assertj.core.data.Offset.offset;
2121

2222
import java.io.IOException;
23+
import java.time.Duration;
2324
import java.util.Collection;
2425
import java.util.Collections;
2526
import java.util.HashSet;
@@ -137,16 +138,19 @@ void testLexCountBounded() {
137138
void testPopMin() {
138139

139140
K key = keyFactory.instance();
141+
V value0 = valueFactory.instance();
140142
V value1 = valueFactory.instance();
141143
V value2 = valueFactory.instance();
142144
V value3 = valueFactory.instance();
143145
V value4 = valueFactory.instance();
144146

147+
zSetOps.add(key, value0, 0);
145148
zSetOps.add(key, value1, 1);
146149
zSetOps.add(key, value2, 2);
147150
zSetOps.add(key, value3, 3);
148151
zSetOps.add(key, value4, 4);
149152

153+
assertThat(zSetOps.popMin(key, Duration.ofSeconds(1))).isEqualTo(new DefaultTypedTuple<>(value0, 0d));
150154
assertThat(zSetOps.popMin(key)).isEqualTo(new DefaultTypedTuple<>(value1, 1d));
151155
assertThat(zSetOps.popMin(key, 2)).containsExactly(new DefaultTypedTuple<>(value2, 2d),
152156
new DefaultTypedTuple<>(value3, 3d));
@@ -162,12 +166,15 @@ void testPopMax() {
162166
V value2 = valueFactory.instance();
163167
V value3 = valueFactory.instance();
164168
V value4 = valueFactory.instance();
169+
V value5 = valueFactory.instance();
165170

166171
zSetOps.add(key, value1, 1);
167172
zSetOps.add(key, value2, 2);
168173
zSetOps.add(key, value3, 3);
169174
zSetOps.add(key, value4, 4);
175+
zSetOps.add(key, value5, 5);
170176

177+
assertThat(zSetOps.popMax(key, Duration.ofSeconds(1))).isEqualTo(new DefaultTypedTuple<>(value5, 5d));
171178
assertThat(zSetOps.popMax(key)).isEqualTo(new DefaultTypedTuple<>(value4, 4d));
172179
assertThat(zSetOps.popMax(key, 2)).containsExactly(new DefaultTypedTuple<>(value3, 3d),
173180
new DefaultTypedTuple<>(value2, 2d));

0 commit comments

Comments
 (0)