diff --git a/src/main/java/io/lettuce/core/cluster/RedisAdvancedClusterAsyncCommandsImpl.java b/src/main/java/io/lettuce/core/cluster/RedisAdvancedClusterAsyncCommandsImpl.java index f95d9577ee..3f9f719b21 100644 --- a/src/main/java/io/lettuce/core/cluster/RedisAdvancedClusterAsyncCommandsImpl.java +++ b/src/main/java/io/lettuce/core/cluster/RedisAdvancedClusterAsyncCommandsImpl.java @@ -58,6 +58,7 @@ * @param Key type. * @param Value type. * @author Mark Paluch + * @author Jon Chambers * @since 3.3 */ @SuppressWarnings("unchecked") diff --git a/src/main/java/io/lettuce/core/cluster/RedisAdvancedClusterReactiveCommandsImpl.java b/src/main/java/io/lettuce/core/cluster/RedisAdvancedClusterReactiveCommandsImpl.java index e75195b609..98cdfcabb4 100644 --- a/src/main/java/io/lettuce/core/cluster/RedisAdvancedClusterReactiveCommandsImpl.java +++ b/src/main/java/io/lettuce/core/cluster/RedisAdvancedClusterReactiveCommandsImpl.java @@ -55,6 +55,7 @@ * @param Key type. * @param Value type. * @author Mark Paluch + * @author Jon Chambers * @since 4.0 */ public class RedisAdvancedClusterReactiveCommandsImpl extends AbstractRedisReactiveCommands diff --git a/src/main/java/io/lettuce/core/cluster/api/async/RedisAdvancedClusterAsyncCommands.java b/src/main/java/io/lettuce/core/cluster/api/async/RedisAdvancedClusterAsyncCommands.java index 509a578be9..516d62fc14 100644 --- a/src/main/java/io/lettuce/core/cluster/api/async/RedisAdvancedClusterAsyncCommands.java +++ b/src/main/java/io/lettuce/core/cluster/api/async/RedisAdvancedClusterAsyncCommands.java @@ -34,6 +34,7 @@ * Advanced asynchronous and thread-safe Redis Cluster API. * * @author Mark Paluch + * @author Jon Chambers * @since 4.0 */ public interface RedisAdvancedClusterAsyncCommands extends RedisClusterAsyncCommands { @@ -250,6 +251,7 @@ default AsyncNodeSelection all() { * * @return String simple-string-reply * @see RedisServerAsyncCommands#flushallAsync() + * @since 6.0 */ RedisFuture flushallAsync(); diff --git a/src/main/java/io/lettuce/core/cluster/api/reactive/RedisAdvancedClusterReactiveCommands.java b/src/main/java/io/lettuce/core/cluster/api/reactive/RedisAdvancedClusterReactiveCommands.java index c073328b4d..6045a8b574 100644 --- a/src/main/java/io/lettuce/core/cluster/api/reactive/RedisAdvancedClusterReactiveCommands.java +++ b/src/main/java/io/lettuce/core/cluster/api/reactive/RedisAdvancedClusterReactiveCommands.java @@ -32,6 +32,7 @@ * Advanced reactive and thread-safe Redis Cluster API. * * @author Mark Paluch + * @author Jon Chambers * @since 5.0 */ public interface RedisAdvancedClusterReactiveCommands extends RedisClusterReactiveCommands { @@ -145,6 +146,7 @@ public interface RedisAdvancedClusterReactiveCommands extends RedisCluster * * @return String simple-string-reply * @see RedisServerReactiveCommands#flushallAsync() + * @since 6.0 */ Mono flushallAsync(); diff --git a/src/main/java/io/lettuce/core/cluster/api/sync/RedisAdvancedClusterCommands.java b/src/main/java/io/lettuce/core/cluster/api/sync/RedisAdvancedClusterCommands.java index 39da1eece1..43f37a9dca 100644 --- a/src/main/java/io/lettuce/core/cluster/api/sync/RedisAdvancedClusterCommands.java +++ b/src/main/java/io/lettuce/core/cluster/api/sync/RedisAdvancedClusterCommands.java @@ -28,13 +28,13 @@ import io.lettuce.core.cluster.api.NodeSelectionSupport; import io.lettuce.core.cluster.api.StatefulRedisClusterConnection; import io.lettuce.core.cluster.models.partitions.RedisClusterNode; -import io.lettuce.core.cluster.pubsub.api.async.PubSubAsyncNodeSelection; import io.lettuce.core.output.KeyStreamingChannel; /** * Advanced synchronous and thread-safe Redis Cluster API. * * @author Mark Paluch + * @author Jon Chambers * @since 4.0 */ public interface RedisAdvancedClusterCommands extends RedisClusterCommands { @@ -249,6 +249,7 @@ default NodeSelection all() { * * @return String simple-string-reply * @see RedisServerCommands#flushallAsync() + * @since 6.0 */ String flushallAsync(); diff --git a/src/test/java/io/lettuce/core/cluster/AdvancedClusterClientIntegrationTests.java b/src/test/java/io/lettuce/core/cluster/AdvancedClusterClientIntegrationTests.java index 7790cc6be6..103e6d7195 100644 --- a/src/test/java/io/lettuce/core/cluster/AdvancedClusterClientIntegrationTests.java +++ b/src/test/java/io/lettuce/core/cluster/AdvancedClusterClientIntegrationTests.java @@ -19,7 +19,6 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import java.time.Instant; import java.util.*; import java.util.stream.Collectors; @@ -43,18 +42,15 @@ import io.lettuce.core.cluster.models.partitions.Partitions; import io.lettuce.core.cluster.models.partitions.RedisClusterNode; import io.lettuce.core.codec.Base16; -import io.lettuce.core.internal.LettuceStrings; -import io.lettuce.test.TestFutures; -import io.lettuce.test.KeysAndValues; -import io.lettuce.test.LettuceExtension; -import io.lettuce.test.ListStreamingAdapter; +import io.lettuce.test.*; import io.lettuce.test.condition.EnabledOnCommand; import io.lettuce.test.settings.TestSettings; /** * Integration tests for {@link StatefulRedisClusterConnection}. - * + * * @author Mark Paluch + * @author Jon Chambers */ @SuppressWarnings("rawtypes") @ExtendWith(LettuceExtension.class) @@ -341,21 +337,17 @@ void flushall() { } @Test - void flushallAsync() throws InterruptedException { + void flushallAsync() { writeKeysToTwoNodes(); assertThat(sync.flushallAsync()).isEqualTo("OK"); - // This is hacky, but by its nature FLUSHALL ASYNC doesn't give us a mechanism to know when it's done - boolean bothKeysCleared = false; - final Instant deadline = Instant.now().plusSeconds(1); - - while (!bothKeysCleared && Instant.now().isBefore(deadline)) { - bothKeysCleared = sync.get(KEY_ON_NODE_1) == null && sync.get(KEY_ON_NODE_2) == null; - } + Wait.untilTrue(() -> sync.get(KEY_ON_NODE_1) == null).waitOrTimeout(); + Wait.untilTrue(() -> sync.get(KEY_ON_NODE_2) == null).waitOrTimeout(); - assertThat(bothKeysCleared).isTrue(); + assertThat(sync.get(KEY_ON_NODE_1)).isNull(); + assertThat(sync.get(KEY_ON_NODE_2)).isNull(); } @Test