You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by up...@apache.org on 2021/03/17 21:22:37 UTC

[geode-benchmarks] 01/03: Adding redis startup timeout

This is an automated email from the ASF dual-hosted git repository.

upthewaterspout pushed a commit to branch feature/redis-performance-testing
in repository https://gitbox.apache.org/repos/asf/geode-benchmarks.git

commit ee767a1cf5723aa73f5fb8199852c9da2ba37930
Author: Dan Smith <da...@vmware.com>
AuthorDate: Mon Mar 15 15:42:12 2021 -0700

    Adding redis startup timeout
---
 .../org/apache/geode/benchmark/tasks/redis/JedisClientManager.java | 7 ++++++-
 .../apache/geode/benchmark/tasks/redis/LettuceClientManager.java   | 4 ++++
 .../org/apache/geode/benchmark/tasks/redis/RedisClientManager.java | 5 ++++-
 3 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/redis/JedisClientManager.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/redis/JedisClientManager.java
index 9008816..713d987 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/redis/JedisClientManager.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/redis/JedisClientManager.java
@@ -72,7 +72,7 @@ public final class JedisClientManager implements RedisClientManager {
   };
 
   @Override
-  public void connect(final Collection<InetSocketAddress> servers) {
+  public void connect(final Collection<InetSocketAddress> servers) throws InterruptedException {
     logger.info("Connect RedisClient on thread {}.", currentThread());
 
     final Set<HostAndPort> nodes = servers.stream()
@@ -84,6 +84,7 @@ public final class JedisClientManager implements RedisClientManager {
     poolConfig.setLifo(false);
     final JedisCluster jedisCluster = new JedisCluster(nodes, Integer.MAX_VALUE, poolConfig);
 
+    long start = System.nanoTime();
     while (true) {
       try (final Jedis jedis = jedisCluster.getConnectionFromSlot(0)) {
         logger.info("Waiting for cluster to come up.");
@@ -93,6 +94,10 @@ public final class JedisClientManager implements RedisClientManager {
         }
         logger.debug(clusterInfo);
       } catch (Exception e) {
+        if(System.nanoTime() - start > CONNECT_TIMEOUT.toNanos()) {
+          throw e;
+        }
+        Thread.sleep(50);
         logger.info("Failed connecting.", e);
       }
     }
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/redis/LettuceClientManager.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/redis/LettuceClientManager.java
index 80040c0..df9b160 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/redis/LettuceClientManager.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/redis/LettuceClientManager.java
@@ -82,6 +82,7 @@ public final class LettuceClientManager implements RedisClientManager {
 
     final RedisClusterClient redisClusterClient = RedisClusterClient.create(nodes);
 
+    long start = System.nanoTime();
     while (true) {
       try (final StatefulRedisClusterConnection<String, String> connection =
           redisClusterClient.connect()) {
@@ -92,6 +93,9 @@ public final class LettuceClientManager implements RedisClientManager {
         }
         logger.debug(clusterInfo);
       } catch (Exception e) {
+        if(System.nanoTime() - start > CONNECT_TIMEOUT.toNanos()) {
+          throw e;
+        }
         logger.info("Failed connecting.", e);
       }
     }
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/redis/RedisClientManager.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/redis/RedisClientManager.java
index d9d0e78..91a6f21 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/redis/RedisClientManager.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/redis/RedisClientManager.java
@@ -17,10 +17,13 @@ package org.apache.geode.benchmark.tasks.redis;
 
 import java.io.Serializable;
 import java.net.InetSocketAddress;
+import java.time.Duration;
 import java.util.Collection;
 
 public interface RedisClientManager extends Serializable {
-  void connect(final Collection<InetSocketAddress> servers);
+  Duration CONNECT_TIMEOUT = Duration.ofMinutes(1);
+
+  void connect(final Collection<InetSocketAddress> servers) throws InterruptedException;
 
   void close();