diff --git a/redisson/src/main/java/org/redisson/connection/ReplicatedConnectionManager.java b/redisson/src/main/java/org/redisson/connection/ReplicatedConnectionManager.java index abde41b25..d6cf857bc 100644 --- a/redisson/src/main/java/org/redisson/connection/ReplicatedConnectionManager.java +++ b/redisson/src/main/java/org/redisson/connection/ReplicatedConnectionManager.java @@ -218,7 +218,7 @@ public class ReplicatedConnectionManager extends MasterSlaveConnectionManager { } RedisConnection connection = connectionFuture.toCompletableFuture().join(); InetSocketAddress addr = connection.getRedisClient().getAddr(); - final Role role = Role.valueOf(r.get(ROLE_KEY)); + Role role = Role.valueOf(r.get(ROLE_KEY)); if (Role.master.equals(role)) { InetSocketAddress master = currentMaster.get(); if (master.equals(addr)) { @@ -226,9 +226,11 @@ public class ReplicatedConnectionManager extends MasterSlaveConnectionManager { } else if (currentMaster.compareAndSet(master, addr)) { CompletableFuture changeFuture = changeMaster(singleSlotRange.getStartSlot(), uri); return changeFuture.handle((ignored, e) -> { + if (e != null) { log.error("Unable to change master to {}", addr, e); currentMaster.compareAndSet(addr, master); - return role; + } + return role; }); } } else if (!config.checkSkipSlavesInit()) {