From b44599cd596040fb67709df8bd8e4d7c33e4c822 Mon Sep 17 00:00:00 2001 From: Chris Eager Date: Fri, 21 Jul 2023 15:50:31 -0500 Subject: [PATCH] Remove unused jedis library --- pom.xml | 6 - service/pom.xml | 5 - .../redis/ReplicatedJedisPool.java | 74 ------- .../redis/ReplicatedJedisPoolTest.java | 209 ------------------ 4 files changed, 294 deletions(-) delete mode 100644 service/src/main/java/org/whispersystems/textsecuregcm/redis/ReplicatedJedisPool.java delete mode 100644 service/src/test/java/org/whispersystems/textsecuregcm/redis/ReplicatedJedisPoolTest.java diff --git a/pom.xml b/pom.xml index f4747425d..33b9d3fb7 100644 --- a/pom.xml +++ b/pom.xml @@ -49,7 +49,6 @@ 2.9.0 2.13.4 2.3.1 - 2.9.0 1.8.0 1.4.1 6.2.4.RELEASE @@ -253,11 +252,6 @@ ${slf4j.version} test - - redis.clients - jedis - ${jedis.version} - commons-logging commons-logging diff --git a/service/pom.xml b/service/pom.xml index 9ea5159e7..d4775234d 100644 --- a/service/pom.xml +++ b/service/pom.xml @@ -323,11 +323,6 @@ - - redis.clients - jedis - - io.lettuce lettuce-core diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/redis/ReplicatedJedisPool.java b/service/src/main/java/org/whispersystems/textsecuregcm/redis/ReplicatedJedisPool.java deleted file mode 100644 index 8ec3b36a5..000000000 --- a/service/src/main/java/org/whispersystems/textsecuregcm/redis/ReplicatedJedisPool.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2013-2020 Signal Messenger, LLC - * SPDX-License-Identifier: AGPL-3.0-only - */ - -package org.whispersystems.textsecuregcm.redis; - -import io.github.resilience4j.circuitbreaker.CircuitBreaker; -import io.github.resilience4j.circuitbreaker.CircuitBreakerConfig; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.function.Supplier; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.whispersystems.textsecuregcm.configuration.CircuitBreakerConfiguration; -import org.whispersystems.textsecuregcm.util.CircuitBreakerUtil; -import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisPool; -import redis.clients.jedis.exceptions.JedisException; - -public class ReplicatedJedisPool { - - private final Logger logger = LoggerFactory.getLogger(ReplicatedJedisPool.class); - private final AtomicInteger replicaIndex = new AtomicInteger(0); - - private final Supplier master; - private final ArrayList> replicas; - - public ReplicatedJedisPool(String name, - JedisPool master, - List replicas, - CircuitBreakerConfiguration circuitBreakerConfiguration) - { - if (replicas.size() < 1) throw new IllegalArgumentException("There must be at least one replica"); - - CircuitBreakerConfig config = circuitBreakerConfiguration.toCircuitBreakerConfig(); - CircuitBreaker masterBreaker = CircuitBreaker.of(String.format("%s-master", name), config); - - CircuitBreakerUtil.registerMetrics(masterBreaker, ReplicatedJedisPool.class); - - this.master = CircuitBreaker.decorateSupplier(masterBreaker, master::getResource); - this.replicas = new ArrayList<>(replicas.size()); - - for (int i=0;i(), new CircuitBreakerConfiguration()); - throw new AssertionError(); - } catch (Exception e) { - // good - } - } - - @Test - void testWriteCheckoutWithSlaves() { - JedisPool master = mock(JedisPool.class); - JedisPool slave = mock(JedisPool.class); - Jedis instance = mock(Jedis.class ); - - when(master.getResource()).thenReturn(instance); - - ReplicatedJedisPool replicatedJedisPool = new ReplicatedJedisPool("testWriteCheckoutWithSlaves", master, Collections.singletonList(slave), new CircuitBreakerConfiguration()); - Jedis writeResource = replicatedJedisPool.getWriteResource(); - - assertThat(writeResource).isEqualTo(instance); - verify(master, times(1)).getResource(); - } - - @Test - void testReadCheckouts() { - JedisPool master = mock(JedisPool.class); - JedisPool slaveOne = mock(JedisPool.class); - JedisPool slaveTwo = mock(JedisPool.class); - Jedis instanceOne = mock(Jedis.class ); - Jedis instanceTwo = mock(Jedis.class ); - - when(slaveOne.getResource()).thenReturn(instanceOne); - when(slaveTwo.getResource()).thenReturn(instanceTwo); - - ReplicatedJedisPool replicatedJedisPool = new ReplicatedJedisPool("testReadCheckouts", master, Arrays.asList(slaveOne, slaveTwo), new CircuitBreakerConfiguration()); - - assertThat(replicatedJedisPool.getReadResource()).isEqualTo(instanceOne); - assertThat(replicatedJedisPool.getReadResource()).isEqualTo(instanceTwo); - assertThat(replicatedJedisPool.getReadResource()).isEqualTo(instanceOne); - assertThat(replicatedJedisPool.getReadResource()).isEqualTo(instanceTwo); - assertThat(replicatedJedisPool.getReadResource()).isEqualTo(instanceOne); - - verifyNoMoreInteractions(master); - } - - @Test - void testBrokenReadCheckout() { - JedisPool master = mock(JedisPool.class); - JedisPool slaveOne = mock(JedisPool.class); - JedisPool slaveTwo = mock(JedisPool.class); - Jedis instanceTwo = mock(Jedis.class ); - - when(slaveOne.getResource()).thenThrow(new JedisException("Connection failed!")); - when(slaveTwo.getResource()).thenReturn(instanceTwo); - - ReplicatedJedisPool replicatedJedisPool = new ReplicatedJedisPool("testBrokenReadCheckout", master, Arrays.asList(slaveOne, slaveTwo), new CircuitBreakerConfiguration()); - - assertThat(replicatedJedisPool.getReadResource()).isEqualTo(instanceTwo); - assertThat(replicatedJedisPool.getReadResource()).isEqualTo(instanceTwo); - assertThat(replicatedJedisPool.getReadResource()).isEqualTo(instanceTwo); - - verifyNoMoreInteractions(master); - } - - @Test - void testAllBrokenReadCheckout() { - JedisPool master = mock(JedisPool.class); - JedisPool slaveOne = mock(JedisPool.class); - JedisPool slaveTwo = mock(JedisPool.class); - - when(slaveOne.getResource()).thenThrow(new JedisException("Connection failed!")); - when(slaveTwo.getResource()).thenThrow(new JedisException("Also failed!")); - - ReplicatedJedisPool replicatedJedisPool = new ReplicatedJedisPool("testAllBrokenReadCheckout", master, Arrays.asList(slaveOne, slaveTwo), new CircuitBreakerConfiguration()); - - try { - replicatedJedisPool.getReadResource(); - throw new AssertionError(); - } catch (Exception e) { - // good - } - - verifyNoMoreInteractions(master); - } - - @Test - void testCircuitBreakerOpen() { - CircuitBreakerConfiguration configuration = new CircuitBreakerConfiguration(); - configuration.setFailureRateThreshold(50); - configuration.setSlidingWindowSize(2); - configuration.setSlidingWindowMinimumNumberOfCalls(2); - - JedisPool master = mock(JedisPool.class); - JedisPool slaveOne = mock(JedisPool.class); - JedisPool slaveTwo = mock(JedisPool.class); - - when(master.getResource()).thenReturn(null); - when(slaveOne.getResource()).thenThrow(new JedisException("Connection failed!")); - when(slaveTwo.getResource()).thenThrow(new JedisException("Also failed!")); - - ReplicatedJedisPool replicatedJedisPool = new ReplicatedJedisPool("testCircuitBreakerOpen", master, - Arrays.asList(slaveOne, slaveTwo), configuration); - replicatedJedisPool.getWriteResource(); - - when(master.getResource()).thenThrow(new JedisException("Master broken!")); - - try { - replicatedJedisPool.getWriteResource(); - throw new AssertionError(); - } catch (JedisException exception) { - // good - } - - try { - replicatedJedisPool.getWriteResource(); - throw new AssertionError(); - } catch (CallNotPermittedException e) { - // good - } - } - - @Test - void testCircuitBreakerHalfOpen() throws InterruptedException { - CircuitBreakerConfiguration configuration = new CircuitBreakerConfiguration(); - configuration.setFailureRateThreshold(50); - configuration.setSlidingWindowSize(2); - configuration.setSlidingWindowMinimumNumberOfCalls(2); - configuration.setPermittedNumberOfCallsInHalfOpenState(1); - configuration.setWaitDurationInOpenStateInSeconds(1); - - JedisPool master = mock(JedisPool.class); - JedisPool slaveOne = mock(JedisPool.class); - JedisPool slaveTwo = mock(JedisPool.class); - - when(master.getResource()).thenThrow(new JedisException("Master broken!")); - when(slaveOne.getResource()).thenThrow(new JedisException("Connection failed!")); - when(slaveTwo.getResource()).thenThrow(new JedisException("Also failed!")); - - ReplicatedJedisPool replicatedJedisPool = new ReplicatedJedisPool("testCircuitBreakerHalfOpen", master, Arrays.asList(slaveOne, slaveTwo), configuration); - - try { - replicatedJedisPool.getWriteResource(); - throw new AssertionError(); - } catch (JedisException exception) { - // good - } - - try { - replicatedJedisPool.getWriteResource(); - throw new AssertionError(); - } catch (JedisException exception) { - // good - } - - try { - replicatedJedisPool.getWriteResource(); - throw new AssertionError(); - } catch (CallNotPermittedException e) { - // good - } - - Thread.sleep(1100); - - try { - replicatedJedisPool.getWriteResource(); - throw new AssertionError(); - } catch (JedisException exception) { - // good - } - - try { - replicatedJedisPool.getWriteResource(); - throw new AssertionError(); - } catch (CallNotPermittedException e) { - // good - } - } - -}