Skip to content

Commit d51ce05

Browse files
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 ec1bcc5 commit d51ce05

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
@@ -542,7 +542,7 @@ default TypedTuple<V> popMax(K key, Duration timeout) {
542542
Assert.notNull(timeout, "Timeout must not be null");
543543
Assert.isTrue(!timeout.isNegative(), "Timeout must not be negative");
544544

545-
return popMin(key, TimeoutUtils.toSeconds(timeout), TimeUnit.SECONDS);
545+
return popMax(key, TimeoutUtils.toSeconds(timeout), TimeUnit.SECONDS);
546546
}
547547

548548
/**

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;
@@ -139,16 +140,19 @@ void testLexCountBounded() {
139140
void testPopMin() {
140141

141142
K key = keyFactory.instance();
143+
V value0 = valueFactory.instance();
142144
V value1 = valueFactory.instance();
143145
V value2 = valueFactory.instance();
144146
V value3 = valueFactory.instance();
145147
V value4 = valueFactory.instance();
146148

149+
zSetOps.add(key, value0, 0);
147150
zSetOps.add(key, value1, 1);
148151
zSetOps.add(key, value2, 2);
149152
zSetOps.add(key, value3, 3);
150153
zSetOps.add(key, value4, 4);
151154

155+
assertThat(zSetOps.popMin(key, Duration.ofSeconds(1))).isEqualTo(new DefaultTypedTuple<>(value0, 0d));
152156
assertThat(zSetOps.popMin(key)).isEqualTo(new DefaultTypedTuple<>(value1, 1d));
153157
assertThat(zSetOps.popMin(key, 2)).containsExactly(new DefaultTypedTuple<>(value2, 2d),
154158
new DefaultTypedTuple<>(value3, 3d));
@@ -164,12 +168,15 @@ void testPopMax() {
164168
V value2 = valueFactory.instance();
165169
V value3 = valueFactory.instance();
166170
V value4 = valueFactory.instance();
171+
V value5 = valueFactory.instance();
167172

168173
zSetOps.add(key, value1, 1);
169174
zSetOps.add(key, value2, 2);
170175
zSetOps.add(key, value3, 3);
171176
zSetOps.add(key, value4, 4);
177+
zSetOps.add(key, value5, 5);
172178

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

0 commit comments

Comments
 (0)