From 552f97b4b2d546dfcd6e2cfd68f908d84fe8239f Mon Sep 17 00:00:00 2001 From: Clement Escoffier Date: Sat, 25 Jun 2022 12:22:44 +0200 Subject: [PATCH] Update to Vert.x 4.3.1 Vert.x 4.3.1 Redis clients has a few API breakage. This commit works around them. In addition, Redis 7.0 dropped the host and post commands. They are now removed from the API (the user can still use a custom command, but these commands were deprecated for a long time) --- bom/application/pom.xml | 2 +- .../client/deployment/RedisTestResource.java | 2 +- .../io/quarkus/redis/client/RedisClient.java | 4 -- .../client/reactive/ReactiveRedisClient.java | 8 ---- .../runtime/ReactiveRedisClientImpl.java | 40 +++++-------------- .../redis/client/runtime/RedisClientImpl.java | 20 +++------- .../datasource/impl/AbstractKeyCommands.java | 30 +++++++------- .../redis/datasource/DatasourceTestBase.java | 2 +- .../redis/datasource/GeoCommandsTest.java | 2 +- .../redis/datasource/PubSubCommandsTest.java | 14 ++++++- .../datasource/SortedSetCommandsTest.java | 4 +- 11 files changed, 47 insertions(+), 81 deletions(-) diff --git a/bom/application/pom.xml b/bom/application/pom.xml index a6bdaea061098..271e7dfbed30f 100644 --- a/bom/application/pom.xml +++ b/bom/application/pom.xml @@ -51,7 +51,7 @@ 1.2.2 1.0.13 2.7.0 - 2.22.0 + 2.23.0 3.17.0 1.1.2 1.2.1 diff --git a/extensions/redis-client/deployment/src/test/java/io/quarkus/redis/client/deployment/RedisTestResource.java b/extensions/redis-client/deployment/src/test/java/io/quarkus/redis/client/deployment/RedisTestResource.java index 05b97d47251ee..891178d99de60 100644 --- a/extensions/redis-client/deployment/src/test/java/io/quarkus/redis/client/deployment/RedisTestResource.java +++ b/extensions/redis-client/deployment/src/test/java/io/quarkus/redis/client/deployment/RedisTestResource.java @@ -11,7 +11,7 @@ public class RedisTestResource implements QuarkusTestResourceLifecycleManager { static GenericContainer server = new GenericContainer<>( DockerImageName.parse("redis:7-alpine")) - .withExposedPorts(6379); + .withExposedPorts(6379); @Override public Map start() { diff --git a/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/client/RedisClient.java b/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/client/RedisClient.java index 019aa9e994b86..597c849deafb8 100644 --- a/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/client/RedisClient.java +++ b/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/client/RedisClient.java @@ -132,8 +132,6 @@ public interface RedisClient { Response hmset(List args); - Response host(List args); - Response hscan(List args); Response hset(List args); @@ -220,8 +218,6 @@ public interface RedisClient { Response ping(List args); - Response post(List args); - Response psetex(String arg0, String arg1, String arg2); Response psubscribe(List args); diff --git a/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/client/reactive/ReactiveRedisClient.java b/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/client/reactive/ReactiveRedisClient.java index 347abf02efe6f..c3adb1e225176 100644 --- a/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/client/reactive/ReactiveRedisClient.java +++ b/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/client/reactive/ReactiveRedisClient.java @@ -263,10 +263,6 @@ static ReactiveRedisClient createClient(String name) { Response hmsetAndAwait(List args); - Uni host(List args); - - Response hostAndAwait(List args); - Uni hscan(List args); Response hscanAndAwait(List args); @@ -439,10 +435,6 @@ static ReactiveRedisClient createClient(String name) { Response pingAndAwait(List args); - Uni post(List args); - - Response postAndAwait(List args); - Uni psetex(String arg0, String arg1, String arg2); Response psetexAndAwait(String arg0, String arg1, String arg2); diff --git a/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/client/runtime/ReactiveRedisClientImpl.java b/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/client/runtime/ReactiveRedisClientImpl.java index e49086f8d17de..5943e113d947e 100644 --- a/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/client/runtime/ReactiveRedisClientImpl.java +++ b/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/client/runtime/ReactiveRedisClientImpl.java @@ -321,22 +321,22 @@ public Response existsAndAwait(List args) { @Override public Uni expire(String arg0, String arg1) { - return redisAPI.expire(arg0, arg1); + return redisAPI.expire(List.of(arg0, arg1)); } @Override public Response expireAndAwait(String arg0, String arg1) { - return redisAPI.expireAndAwait(arg0, arg1); + return redisAPI.expireAndAwait(List.of(arg0, arg1)); } @Override public Uni expireat(String arg0, String arg1) { - return redisAPI.expireat(arg0, arg1); + return redisAPI.expireat(List.of(arg0, arg1)); } @Override public Response expireatAndAwait(String arg0, String arg1) { - return redisAPI.expireatAndAwait(arg0, arg1); + return redisAPI.expireatAndAwait(List.of(arg0, arg1)); } @Override @@ -579,16 +579,6 @@ public Response hmsetAndAwait(List args) { return redisAPI.hmsetAndAwait(args); } - @Override - public Uni host(List args) { - return redisAPI.host(args); - } - - @Override - public Response hostAndAwait(List args) { - return redisAPI.hostAndAwait(args); - } - @Override public Uni hscan(List args) { return redisAPI.hscan(args); @@ -941,22 +931,22 @@ public Response persistAndAwait(String arg0) { @Override public Uni pexpire(String arg0, String arg1) { - return redisAPI.pexpire(arg0, arg1); + return redisAPI.pexpire(List.of(arg0, arg1)); } @Override public Response pexpireAndAwait(String arg0, String arg1) { - return redisAPI.pexpireAndAwait(arg0, arg1); + return redisAPI.pexpireAndAwait(List.of(arg0, arg1)); } @Override public Uni pexpireat(String arg0, String arg1) { - return redisAPI.pexpireat(arg0, arg1); + return redisAPI.pexpireat(List.of(arg0, arg1)); } @Override public Response pexpireatAndAwait(String arg0, String arg1) { - return redisAPI.pexpireatAndAwait(arg0, arg1); + return redisAPI.pexpireatAndAwait(List.of(arg0, arg1)); } @Override @@ -1019,16 +1009,6 @@ public Response pingAndAwait(List args) { return redisAPI.pingAndAwait(args); } - @Override - public Uni post(List args) { - return redisAPI.post(args); - } - - @Override - public Response postAndAwait(List args) { - return redisAPI.postAndAwait(args); - } - @Override public Uni psetex(String arg0, String arg1, String arg2) { return redisAPI.psetex(arg0, arg1, arg2); @@ -1801,12 +1781,12 @@ public Response xrevrangeAndAwait(List args) { @Override public Uni xsetid(String arg0, String arg1) { - return redisAPI.xsetid(arg0, arg1); + return redisAPI.xsetid(List.of(arg0, arg1)); } @Override public Response xsetidAndAwait(String arg0, String arg1) { - return redisAPI.xsetidAndAwait(arg0, arg1); + return redisAPI.xsetidAndAwait(List.of(arg0, arg1)); } @Override diff --git a/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/client/runtime/RedisClientImpl.java b/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/client/runtime/RedisClientImpl.java index 4fd58b5666ffc..0e69660a26dc6 100644 --- a/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/client/runtime/RedisClientImpl.java +++ b/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/client/runtime/RedisClientImpl.java @@ -174,12 +174,12 @@ public Response exists(List args) { @Override public Response expire(String arg0, String arg1) { - return await(redisAPI.expire(arg0, arg1)); + return await(redisAPI.expire(List.of(arg0, arg1))); } @Override public Response expireat(String arg0, String arg1) { - return await(redisAPI.expireat(arg0, arg1)); + return await(redisAPI.expireat(List.of(arg0, arg1))); } @Override @@ -302,11 +302,6 @@ public Response hmset(List args) { return await(redisAPI.hmset(args)); } - @Override - public Response host(List args) { - return await(redisAPI.host(args)); - } - @Override public Response hscan(List args) { return await(redisAPI.hscan(args)); @@ -484,12 +479,12 @@ public Response persist(String arg0) { @Override public Response pexpire(String arg0, String arg1) { - return await(redisAPI.pexpire(arg0, arg1)); + return await(redisAPI.pexpire(List.of(arg0, arg1))); } @Override public Response pexpireat(String arg0, String arg1) { - return await(redisAPI.pexpireat(arg0, arg1)); + return await(redisAPI.pexpireat(List.of(arg0, arg1))); } @Override @@ -522,11 +517,6 @@ public Response ping(List args) { return await(redisAPI.ping(args)); } - @Override - public Response post(List args) { - return await(redisAPI.post(args)); - } - @Override public Response psetex(String arg0, String arg1, String arg2) { return await(redisAPI.psetex(arg0, arg1, arg2)); @@ -914,7 +904,7 @@ public Response xrevrange(List args) { @Override public Response xsetid(String arg0, String arg1) { - return await(redisAPI.xsetid(arg0, arg1)); + return await(redisAPI.xsetid(List.of(arg0, arg1))); } @Override diff --git a/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/datasource/impl/AbstractKeyCommands.java b/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/datasource/impl/AbstractKeyCommands.java index 85b1ae68ce6b4..5c1b976498ce7 100644 --- a/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/datasource/impl/AbstractKeyCommands.java +++ b/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/datasource/impl/AbstractKeyCommands.java @@ -5,6 +5,8 @@ import static io.smallrye.mutiny.helpers.ParameterValidation.nonNull; import static io.smallrye.mutiny.helpers.ParameterValidation.positive; import static io.smallrye.mutiny.helpers.ParameterValidation.positiveOrZero; +import static io.vertx.mutiny.redis.client.Command.EXPIRETIME; +import static io.vertx.mutiny.redis.client.Command.PEXPIRETIME; import java.nio.charset.StandardCharsets; import java.time.Duration; @@ -28,10 +30,6 @@ class AbstractKeyCommands extends AbstractRedisCommands { protected final Class typeOfKey; - // TODO Remove after update to Vert.x 4.3 - public static final Command EXPIRETIME = Command.create("expiretime"); - public static final Command PEXPIRETIME = Command.create("pexpiretime"); - AbstractKeyCommands(RedisCommandExecutor redis, Class k) { super(redis, new Marshaller(k)); this.typeOfKey = k; @@ -240,12 +238,12 @@ Uni _rename(K key, K newKey) { nonNull(newKey, "newKey"); return execute(RedisCommand.of(Command.RENAME) .put(marshaller.encode(key)).put(marshaller.encode(newKey))) - .onFailure().transform(t -> { - if (t.getMessage().equalsIgnoreCase("ERR no such key")) { - return new NoSuchElementException(new String(marshaller.encode(key), StandardCharsets.UTF_8)); - } - return t; - }); + .onFailure().transform(t -> { + if (t.getMessage().equalsIgnoreCase("ERR no such key")) { + return new NoSuchElementException(new String(marshaller.encode(key), StandardCharsets.UTF_8)); + } + return t; + }); } Uni _renamenx(K key, K newKey) { @@ -253,12 +251,12 @@ Uni _renamenx(K key, K newKey) { nonNull(newKey, "newKey"); return execute(RedisCommand.of(Command.RENAMENX) .put(marshaller.encode(key)).put(marshaller.encode(newKey))) - .onFailure().transform(t -> { - if (t.getMessage().equalsIgnoreCase("ERR no such key")) { - return new NoSuchElementException(new String(marshaller.encode(key), StandardCharsets.UTF_8)); - } - return t; - }); + .onFailure().transform(t -> { + if (t.getMessage().equalsIgnoreCase("ERR no such key")) { + return new NoSuchElementException(new String(marshaller.encode(key), StandardCharsets.UTF_8)); + } + return t; + }); } ReactiveCursor> scan() { diff --git a/extensions/redis-client/runtime/src/test/java/io/quarkus/redis/datasource/DatasourceTestBase.java b/extensions/redis-client/runtime/src/test/java/io/quarkus/redis/datasource/DatasourceTestBase.java index be7ef53b0f5fc..b2fc89e096926 100644 --- a/extensions/redis-client/runtime/src/test/java/io/quarkus/redis/datasource/DatasourceTestBase.java +++ b/extensions/redis-client/runtime/src/test/java/io/quarkus/redis/datasource/DatasourceTestBase.java @@ -21,7 +21,7 @@ public class DatasourceTestBase { static GenericContainer server = new GenericContainer<>( DockerImageName.parse("redis:7-alpine")) - .withExposedPorts(6379); + .withExposedPorts(6379); @BeforeAll static void init() { diff --git a/extensions/redis-client/runtime/src/test/java/io/quarkus/redis/datasource/GeoCommandsTest.java b/extensions/redis-client/runtime/src/test/java/io/quarkus/redis/datasource/GeoCommandsTest.java index 9136c4e4fc575..8c5edf7077c51 100644 --- a/extensions/redis-client/runtime/src/test/java/io/quarkus/redis/datasource/GeoCommandsTest.java +++ b/extensions/redis-client/runtime/src/test/java/io/quarkus/redis/datasource/GeoCommandsTest.java @@ -345,7 +345,7 @@ void georadiusWithNullArgs() { assertThatThrownBy( () -> geo.georadius(key, VALENCE_LONGITUDE, VALENCE_LATITUDE, 5, GeoUnit.KM, (GeoRadiusStoreArgs) null)) - .isInstanceOf(IllegalArgumentException.class); + .isInstanceOf(IllegalArgumentException.class); } @Test diff --git a/extensions/redis-client/runtime/src/test/java/io/quarkus/redis/datasource/PubSubCommandsTest.java b/extensions/redis-client/runtime/src/test/java/io/quarkus/redis/datasource/PubSubCommandsTest.java index af65df9951c03..4826578513a8d 100644 --- a/extensions/redis-client/runtime/src/test/java/io/quarkus/redis/datasource/PubSubCommandsTest.java +++ b/extensions/redis-client/runtime/src/test/java/io/quarkus/redis/datasource/PubSubCommandsTest.java @@ -255,12 +255,12 @@ void unsubscribe() { subscriber.unsubscribe(channel); + awaitNoMoreActiveChannels(); + pubsub.publish(channel, new Person("leia", "skywalker")); Awaitility.await().pollDelay(Duration.ofMillis(10)).until(() -> people.size() == 1); - awaitNoMoreActiveChannels(); - } @Test @@ -296,6 +296,8 @@ void unsubscribeOne() { Awaitility.await().pollDelay(Duration.ofMillis(10)).until(() -> people.size() > 2); subscriber.unsubscribe("bar"); + + awaitNoMoreActiveChannels(); } @Test @@ -308,6 +310,7 @@ void unsubscribePattern() { subscriber.unsubscribe(channel + "*"); + awaitNoMoreActiveChannels(); pubsub.publish(channel + "1", new Person("leia", "skywalker")); Awaitility.await().pollDelay(Duration.ofMillis(10)).until(() -> people.size() == 1); @@ -323,9 +326,12 @@ void unsubscribeAllPatterns() { subscriber.unsubscribe(); + awaitNoMoreActiveChannels(); + pubsub.publish(channel + "1", new Person("leia", "skywalker")); Awaitility.await().pollDelay(Duration.ofMillis(10)).until(() -> people.size() == 1); + } @Test @@ -342,6 +348,8 @@ void unsubscribeOnePattern() { pubsub.publish("bar4", new Person("luke", "skywalker")); subscriber.unsubscribe("bar*"); + + awaitNoMoreActiveChannels(); } @Test @@ -358,6 +366,8 @@ void utf8ChannelAndContent() { Assertions.assertThat(people).containsExactly(new Person(name, name)); subscriber.unsubscribe(); + + awaitNoMoreActiveChannels(); } } diff --git a/extensions/redis-client/runtime/src/test/java/io/quarkus/redis/datasource/SortedSetCommandsTest.java b/extensions/redis-client/runtime/src/test/java/io/quarkus/redis/datasource/SortedSetCommandsTest.java index fdb1a50066fbe..1ea602b80fca5 100644 --- a/extensions/redis-client/runtime/src/test/java/io/quarkus/redis/datasource/SortedSetCommandsTest.java +++ b/extensions/redis-client/runtime/src/test/java/io/quarkus/redis/datasource/SortedSetCommandsTest.java @@ -183,7 +183,7 @@ void zcount() { assertThat(setOfPlaces.zadd(key, new ScoredValue<>(Place.crussol, 1.0), new ScoredValue<>(Place.grignan, 2.0), new ScoredValue<>(Place.suze, 2.1))) - .isEqualTo(3); + .isEqualTo(3); assertThat(setOfPlaces.zcount(key, ScoreRange.from(1.0, 3.0))).isEqualTo(3); assertThat(setOfPlaces.zcount(key, ScoreRange.from(1.0, 2.0))).isEqualTo(2); @@ -534,7 +534,7 @@ void zrevrangestorebyscore() { assertThat( setOfPlaces.zrangestorebyscore("key1", key, new ScoreRange<>(2.0, true, 1.0, false), new ZRangeArgs().rev().limit(0, 2))) - .isEqualTo(1); + .isEqualTo(1); assertThat(setOfPlaces.zrange("key1", 0, 2)).isEqualTo(List.of(Place.grignan)); }