Package redis.clients.jedis.tests.utils

Source Code of redis.clients.jedis.tests.utils.JedisSentinelTestUtil

package redis.clients.jedis.tests.utils;

import java.util.concurrent.atomic.AtomicReference;

import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPubSub;

public class JedisSentinelTestUtil {
    public static HostAndPort waitForNewPromotedMaster(final String masterName,
      final Jedis sentinelJedis, final Jedis commandJedis)
      throws InterruptedException {

  final AtomicReference<String> newmaster = new AtomicReference<String>(
    "");

  sentinelJedis.psubscribe(new JedisPubSub() {

      @Override
      public void onMessage(String channel, String message) {
      }

      @Override
      public void onPMessage(String pattern, String channel,
        String message) {
    if (channel.equals("+switch-master")) {
        newmaster.set(message);
        punsubscribe();
    } else if (channel.startsWith("-failover-abort")) {
        punsubscribe();
        throw new FailoverAbortedException(
          "Unfortunately sentinel cannot failover... reason(channel) : "
            + channel + " / message : " + message);
    }
      }

      @Override
      public void onSubscribe(String channel, int subscribedChannels) {
      }

      @Override
      public void onUnsubscribe(String channel, int subscribedChannels) {
      }

      @Override
      public void onPUnsubscribe(String pattern, int subscribedChannels) {
      }

      @Override
      public void onPSubscribe(String pattern, int subscribedChannels) {
    commandJedis.sentinelFailover(masterName);
      }
  }, "*");

  String[] chunks = newmaster.get().split(" ");
  HostAndPort newMaster = new HostAndPort(chunks[3],
    Integer.parseInt(chunks[4]));

  return newMaster;
    }

}
TOP

Related Classes of redis.clients.jedis.tests.utils.JedisSentinelTestUtil

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.