diff --git a/grpclb/src/generated/main/java/io/grpc/grpclb/LoadBalancerProto.java b/grpclb/src/generated/main/java/io/grpc/grpclb/LoadBalancerProto.java index 2d3a419380..0720a54ad5 100644 --- a/grpclb/src/generated/main/java/io/grpc/grpclb/LoadBalancerProto.java +++ b/grpclb/src/generated/main/java/io/grpc/grpclb/LoadBalancerProto.java @@ -72,7 +72,7 @@ public final class LoadBalancerProto { "sponse_type\"i\n\nServerList\022#\n\007servers\030\001 \003" + "(\0132\022.grpc.lb.v1.Server\0226\n\023expiration_int" + "erval\030\003 \001(\0132\031.google.protobuf.Duration\"\\", - "\n\006Server\022\022\n\nip_address\030\001 \001(\t\022\014\n\004port\030\002 \001" + + "\n\006Server\022\022\n\nip_address\030\001 \001(\014\022\014\n\004port\030\002 \001" + "(\005\022\032\n\022load_balance_token\030\003 \001(\t\022\024\n\014drop_r" + "equest\030\004 \001(\0102b\n\014LoadBalancer\022R\n\013BalanceL" + "oad\022\036.grpc.lb.v1.LoadBalanceRequest\032\037.gr" + diff --git a/grpclb/src/generated/main/java/io/grpc/grpclb/Server.java b/grpclb/src/generated/main/java/io/grpc/grpclb/Server.java index 0ad5c4d9ac..1eb8826631 100644 --- a/grpclb/src/generated/main/java/io/grpc/grpclb/Server.java +++ b/grpclb/src/generated/main/java/io/grpc/grpclb/Server.java @@ -15,7 +15,7 @@ public final class Server extends super(builder); } private Server() { - ipAddress_ = ""; + ipAddress_ = com.google.protobuf.ByteString.EMPTY; port_ = 0; loadBalanceToken_ = ""; dropRequest_ = false; @@ -46,9 +46,8 @@ public final class Server extends break; } case 10: { - java.lang.String s = input.readStringRequireUtf8(); - ipAddress_ = s; + ipAddress_ = input.readBytes(); break; } case 16: { @@ -92,53 +91,27 @@ public final class Server extends } public static final int IP_ADDRESS_FIELD_NUMBER = 1; - private volatile java.lang.Object ipAddress_; + private com.google.protobuf.ByteString ipAddress_; /** - * optional string ip_address = 1; + * optional bytes ip_address = 1; * *
-   * A resolved address and port for the server. The IP address string may
+   * A resolved address for the server, serialized in network-byte-order. It may
    * either be an IPv4 or IPv6 address.
    * 
*/ - public java.lang.String getIpAddress() { - java.lang.Object ref = ipAddress_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - ipAddress_ = s; - return s; - } - } - /** - * optional string ip_address = 1; - * - *
-   * A resolved address and port for the server. The IP address string may
-   * either be an IPv4 or IPv6 address.
-   * 
- */ - public com.google.protobuf.ByteString - getIpAddressBytes() { - java.lang.Object ref = ipAddress_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - ipAddress_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } + public com.google.protobuf.ByteString getIpAddress() { + return ipAddress_; } public static final int PORT_FIELD_NUMBER = 2; private int port_; /** * optional int32 port = 2; + * + *
+   * A resolved port number for the server.
+   * 
*/ public int getPort() { return port_; @@ -216,8 +189,8 @@ public final class Server extends public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (!getIpAddressBytes().isEmpty()) { - com.google.protobuf.GeneratedMessage.writeString(output, 1, ipAddress_); + if (!ipAddress_.isEmpty()) { + output.writeBytes(1, ipAddress_); } if (port_ != 0) { output.writeInt32(2, port_); @@ -235,8 +208,9 @@ public final class Server extends if (size != -1) return size; size = 0; - if (!getIpAddressBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessage.computeStringSize(1, ipAddress_); + if (!ipAddress_.isEmpty()) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(1, ipAddress_); } if (port_ != 0) { size += com.google.protobuf.CodedOutputStream @@ -360,7 +334,7 @@ public final class Server extends } public Builder clear() { super.clear(); - ipAddress_ = ""; + ipAddress_ = com.google.protobuf.ByteString.EMPTY; port_ = 0; @@ -409,9 +383,8 @@ public final class Server extends public Builder mergeFrom(io.grpc.grpclb.Server other) { if (other == io.grpc.grpclb.Server.getDefaultInstance()) return this; - if (!other.getIpAddress().isEmpty()) { - ipAddress_ = other.ipAddress_; - onChanged(); + if (other.getIpAddress() != com.google.protobuf.ByteString.EMPTY) { + setIpAddress(other.getIpAddress()); } if (other.getPort() != 0) { setPort(other.getPort()); @@ -449,58 +422,27 @@ public final class Server extends return this; } - private java.lang.Object ipAddress_ = ""; + private com.google.protobuf.ByteString ipAddress_ = com.google.protobuf.ByteString.EMPTY; /** - * optional string ip_address = 1; + * optional bytes ip_address = 1; * *
-     * A resolved address and port for the server. The IP address string may
+     * A resolved address for the server, serialized in network-byte-order. It may
      * either be an IPv4 or IPv6 address.
      * 
*/ - public java.lang.String getIpAddress() { - java.lang.Object ref = ipAddress_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - ipAddress_ = s; - return s; - } else { - return (java.lang.String) ref; - } + public com.google.protobuf.ByteString getIpAddress() { + return ipAddress_; } /** - * optional string ip_address = 1; + * optional bytes ip_address = 1; * *
-     * A resolved address and port for the server. The IP address string may
+     * A resolved address for the server, serialized in network-byte-order. It may
      * either be an IPv4 or IPv6 address.
      * 
*/ - public com.google.protobuf.ByteString - getIpAddressBytes() { - java.lang.Object ref = ipAddress_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - ipAddress_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - /** - * optional string ip_address = 1; - * - *
-     * A resolved address and port for the server. The IP address string may
-     * either be an IPv4 or IPv6 address.
-     * 
- */ - public Builder setIpAddress( - java.lang.String value) { + public Builder setIpAddress(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } @@ -510,10 +452,10 @@ public final class Server extends return this; } /** - * optional string ip_address = 1; + * optional bytes ip_address = 1; * *
-     * A resolved address and port for the server. The IP address string may
+     * A resolved address for the server, serialized in network-byte-order. It may
      * either be an IPv4 or IPv6 address.
      * 
*/ @@ -523,35 +465,24 @@ public final class Server extends onChanged(); return this; } - /** - * optional string ip_address = 1; - * - *
-     * A resolved address and port for the server. The IP address string may
-     * either be an IPv4 or IPv6 address.
-     * 
- */ - public Builder setIpAddressBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - - ipAddress_ = value; - onChanged(); - return this; - } private int port_ ; /** * optional int32 port = 2; + * + *
+     * A resolved port number for the server.
+     * 
*/ public int getPort() { return port_; } /** * optional int32 port = 2; + * + *
+     * A resolved port number for the server.
+     * 
*/ public Builder setPort(int value) { @@ -561,6 +492,10 @@ public final class Server extends } /** * optional int32 port = 2; + * + *
+     * A resolved port number for the server.
+     * 
*/ public Builder clearPort() { diff --git a/grpclb/src/generated/main/java/io/grpc/grpclb/ServerOrBuilder.java b/grpclb/src/generated/main/java/io/grpc/grpclb/ServerOrBuilder.java index c18d6a542d..9918f75f27 100644 --- a/grpclb/src/generated/main/java/io/grpc/grpclb/ServerOrBuilder.java +++ b/grpclb/src/generated/main/java/io/grpc/grpclb/ServerOrBuilder.java @@ -8,27 +8,21 @@ public interface ServerOrBuilder extends com.google.protobuf.MessageOrBuilder { /** - * optional string ip_address = 1; + * optional bytes ip_address = 1; * *
-   * A resolved address and port for the server. The IP address string may
+   * A resolved address for the server, serialized in network-byte-order. It may
    * either be an IPv4 or IPv6 address.
    * 
*/ - java.lang.String getIpAddress(); - /** - * optional string ip_address = 1; - * - *
-   * A resolved address and port for the server. The IP address string may
-   * either be an IPv4 or IPv6 address.
-   * 
- */ - com.google.protobuf.ByteString - getIpAddressBytes(); + com.google.protobuf.ByteString getIpAddress(); /** * optional int32 port = 2; + * + *
+   * A resolved port number for the server.
+   * 
*/ int getPort(); diff --git a/grpclb/src/main/java/io/grpc/grpclb/GrpclbLoadBalancer.java b/grpclb/src/main/java/io/grpc/grpclb/GrpclbLoadBalancer.java index 1f0f665bbc..0b857b4bac 100644 --- a/grpclb/src/main/java/io/grpc/grpclb/GrpclbLoadBalancer.java +++ b/grpclb/src/main/java/io/grpc/grpclb/GrpclbLoadBalancer.java @@ -35,6 +35,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import com.google.common.base.Supplier; import com.google.common.base.Suppliers; +import com.google.common.base.Throwables; import io.grpc.Attributes; import io.grpc.Channel; @@ -49,8 +50,10 @@ import io.grpc.internal.GrpcUtil; import io.grpc.internal.SharedResourceHolder; import io.grpc.stub.StreamObserver; +import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.SocketAddress; +import java.net.UnknownHostException; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -285,13 +288,17 @@ class GrpclbLoadBalancer extends LoadBalancer { if (server.getDropRequest()) { listBuilder.add(null); } else { - InetSocketAddress address = new InetSocketAddress( - server.getIpAddress(), server.getPort()); - listBuilder.add(address); - // TODO(zhangkun83): fill the LB token to the attributes, and insert it to the - // application RPCs. - if (!newServerMap.containsKey(address)) { - newServerMap.put(address, new ResolvedServerInfo(address, Attributes.EMPTY)); + try { + InetSocketAddress address = new InetSocketAddress( + InetAddress.getByAddress(server.getIpAddress().toByteArray()), server.getPort()); + listBuilder.add(address); + // TODO(zhangkun83): fill the LB token to the attributes, and insert it to the + // application RPCs. + if (!newServerMap.containsKey(address)) { + newServerMap.put(address, new ResolvedServerInfo(address, Attributes.EMPTY)); + } + } catch (UnknownHostException e) { + Throwables.propagate(e); } } } diff --git a/grpclb/src/main/proto/load_balancer.proto b/grpclb/src/main/proto/load_balancer.proto index 70261b47de..a54600cd3e 100644 --- a/grpclb/src/main/proto/load_balancer.proto +++ b/grpclb/src/main/proto/load_balancer.proto @@ -89,9 +89,11 @@ message ServerList { } message Server { - // A resolved address and port for the server. The IP address string may + // A resolved address for the server, serialized in network-byte-order. It may // either be an IPv4 or IPv6 address. - string ip_address = 1; + bytes ip_address = 1; + + // A resolved port number for the server. int32 port = 2; // An opaque token that is passed from the client to the server in metadata. diff --git a/grpclb/src/test/java/io/grpc/grpclb/GrpclbLoadBalancerTest.java b/grpclb/src/test/java/io/grpc/grpclb/GrpclbLoadBalancerTest.java index 28b1f6ae31..d2f8878393 100644 --- a/grpclb/src/test/java/io/grpc/grpclb/GrpclbLoadBalancerTest.java +++ b/grpclb/src/test/java/io/grpc/grpclb/GrpclbLoadBalancerTest.java @@ -46,6 +46,7 @@ import static org.mockito.Mockito.when; import static org.mockito.Mockito.withSettings; import com.google.common.base.Supplier; +import com.google.protobuf.ByteString; import io.grpc.Attributes; import io.grpc.EquivalentAddressGroup; @@ -476,7 +477,7 @@ public class GrpclbLoadBalancerTest { for (ResolvedServerInfo server : servers) { InetSocketAddress addr = (InetSocketAddress) server.getAddress(); serverListBuilder.addServers(Server.newBuilder() - .setIpAddress(addr.getHostString()) + .setIpAddress(ByteString.copyFrom(addr.getAddress().getAddress())) .setPort(addr.getPort()) .build()); }