From 8e680144411d13bf87dd0d89207ba9f07bf70dd0 Mon Sep 17 00:00:00 2001 From: Marc Date: Tue, 26 Oct 2021 17:08:44 +0200 Subject: [PATCH] fix: bump hazelcast version to 4.1.1 fixes rateLimit repository As 3.10 gateway provides hazelcast version 4.1.1, APIM has to use same hazelcast version, to ensure hazelcast repository plugin compatibility (there has been breaking changes since hazelcast 3.12). This fixes hazelcast ratelimit implementation. --- .../HazelcastRateLimitRepository.java | 26 +++++++++++-------- pom.xml | 2 +- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/gravitee-apim-repository/gravitee-apim-repository-hazelcast/src/main/java/io/gravitee/repository/hazelcast/ratelimit/HazelcastRateLimitRepository.java b/gravitee-apim-repository/gravitee-apim-repository-hazelcast/src/main/java/io/gravitee/repository/hazelcast/ratelimit/HazelcastRateLimitRepository.java index 8ef90ad936..514099f15f 100644 --- a/gravitee-apim-repository/gravitee-apim-repository-hazelcast/src/main/java/io/gravitee/repository/hazelcast/ratelimit/HazelcastRateLimitRepository.java +++ b/gravitee-apim-repository/gravitee-apim-repository-hazelcast/src/main/java/io/gravitee/repository/hazelcast/ratelimit/HazelcastRateLimitRepository.java @@ -16,14 +16,16 @@ package io.gravitee.repository.hazelcast.ratelimit; import com.hazelcast.core.HazelcastInstance; -import com.hazelcast.core.IMap; +import com.hazelcast.map.IMap; import io.gravitee.repository.hazelcast.ratelimit.configuration.HazelcastRateLimitConfiguration; import io.gravitee.repository.ratelimit.api.RateLimitRepository; import io.gravitee.repository.ratelimit.model.RateLimit; -import io.reactivex.*; +import io.reactivex.Completable; +import io.reactivex.Maybe; +import io.reactivex.Single; +import io.reactivex.SingleSource; import io.reactivex.functions.Function; import io.reactivex.schedulers.Schedulers; -import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Lock; import java.util.function.Supplier; @@ -53,7 +55,7 @@ public void afterPropertiesSet() { public Single incrementAndGet(String key, long weight, Supplier supplier) { final long now = System.currentTimeMillis(); - Lock lock = hazelcastInstance.getLock("lock-rl-" + key); + Lock lock = hazelcastInstance.getCPSubsystem().getLock("lock-rl-" + key); return Completable .create( @@ -67,7 +69,7 @@ public Single incrementAndGet(String key, long weight, Supplier Maybe - .fromFuture(counters.getAsync(key)) + .fromFuture(counters.getAsync(key).toCompletableFuture()) .switchIfEmpty((SingleSource) observer -> observer.onSuccess(supplier.get())) .flatMap( (Function>) rateLimit -> { @@ -81,12 +83,14 @@ public Single incrementAndGet(String key, long weight, Supplier Single.just(finalRateLimit))) .doFinally(lock::unlock); diff --git a/pom.xml b/pom.xml index ad5fb3d043..c6e2a7da0a 100644 --- a/pom.xml +++ b/pom.xml @@ -83,7 +83,7 @@ 2.7 30.1.1-jre 1.3 - 3.12.9 + 4.1.1 3.7.0 1.9.13 3.10.2