Fixed - Redis nodes with noaddr flag should be parsed correctly.

pull/1499/head
Nikita 7 years ago
parent 8d347ad22b
commit ec2ad2e2cd

@ -23,6 +23,7 @@ import org.redisson.client.handler.State;
import org.redisson.client.protocol.Decoder;
import org.redisson.cluster.ClusterNodeInfo;
import org.redisson.cluster.ClusterSlotRange;
import org.redisson.cluster.ClusterNodeInfo.Flag;
import io.netty.buffer.ByteBuf;
import io.netty.util.CharsetUtil;
@ -53,18 +54,20 @@ public class ClusterNodesDecoder implements Decoder<List<ClusterNodeInfo>> {
String nodeId = params[0];
node.setNodeId(nodeId);
String protocol = "redis://";
if (ssl) {
protocol = "rediss://";
}
String addr = protocol + params[1].split("@")[0];
node.setAddress(addr);
String flags = params[2];
for (String flag : flags.split(",")) {
String flagValue = flag.toUpperCase().replaceAll("\\?", "");
node.addFlag(ClusterNodeInfo.Flag.valueOf(flagValue));
}
if (!node.containsFlag(Flag.NOADDR)) {
String protocol = "redis://";
if (ssl) {
protocol = "rediss://";
}
String addr = protocol + params[1].split("@")[0];
node.setAddress(addr);
}
String slaveOf = params[3];
if (!"-".equals(slaveOf)) {

@ -16,6 +16,7 @@
package org.redisson.cluster;
import java.net.URI;
import java.util.EnumSet;
import java.util.HashSet;
import java.util.Set;
import org.redisson.misc.URIBuilder;
@ -33,7 +34,7 @@ public class ClusterNodeInfo {
private String nodeId;
private URI address;
private final Set<Flag> flags = new HashSet<Flag>();
private final Set<Flag> flags = EnumSet.noneOf(Flag.class);
private String slaveOf;
private final Set<ClusterSlotRange> slotRanges = new HashSet<ClusterSlotRange>();

Loading…
Cancel
Save