diff --git a/grpclb/src/generated/main/java/io/grpc/grpclb/ClientStats.java b/grpclb/src/generated/main/java/io/grpc/grpclb/ClientStats.java index 80d43b115e..a6fa38d384 100644 --- a/grpclb/src/generated/main/java/io/grpc/grpclb/ClientStats.java +++ b/grpclb/src/generated/main/java/io/grpc/grpclb/ClientStats.java @@ -22,10 +22,9 @@ public final class ClientStats extends private ClientStats() { numCallsStarted_ = 0L; numCallsFinished_ = 0L; - numCallsFinishedWithDropForRateLimiting_ = 0L; - numCallsFinishedWithDropForLoadBalancing_ = 0L; numCallsFinishedWithClientFailedToSend_ = 0L; numCallsFinishedKnownReceived_ = 0L; + callsFinishedWithDrop_ = java.util.Collections.emptyList(); } @java.lang.Override @@ -76,16 +75,6 @@ public final class ClientStats extends numCallsFinished_ = input.readInt64(); break; } - case 32: { - - numCallsFinishedWithDropForRateLimiting_ = input.readInt64(); - break; - } - case 40: { - - numCallsFinishedWithDropForLoadBalancing_ = input.readInt64(); - break; - } case 48: { numCallsFinishedWithClientFailedToSend_ = input.readInt64(); @@ -96,6 +85,15 @@ public final class ClientStats extends numCallsFinishedKnownReceived_ = input.readInt64(); break; } + case 66: { + if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) { + callsFinishedWithDrop_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000020; + } + callsFinishedWithDrop_.add( + input.readMessage(io.grpc.grpclb.ClientStatsPerToken.parser(), extensionRegistry)); + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -104,6 +102,9 @@ public final class ClientStats extends throw new com.google.protobuf.InvalidProtocolBufferException( e).setUnfinishedMessage(this); } finally { + if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) { + callsFinishedWithDrop_ = java.util.Collections.unmodifiableList(callsFinishedWithDrop_); + } makeExtensionsImmutable(); } } @@ -119,6 +120,7 @@ public final class ClientStats extends io.grpc.grpclb.ClientStats.class, io.grpc.grpclb.ClientStats.Builder.class); } + private int bitField0_; public static final int TIMESTAMP_FIELD_NUMBER = 1; private com.google.protobuf.Timestamp timestamp_; /** @@ -178,34 +180,6 @@ public final class ClientStats extends return numCallsFinished_; } - public static final int NUM_CALLS_FINISHED_WITH_DROP_FOR_RATE_LIMITING_FIELD_NUMBER = 4; - private long numCallsFinishedWithDropForRateLimiting_; - /** - *
-   * The total number of RPCs that were dropped by the client because of rate
-   * limiting.
-   * 
- * - * int64 num_calls_finished_with_drop_for_rate_limiting = 4; - */ - public long getNumCallsFinishedWithDropForRateLimiting() { - return numCallsFinishedWithDropForRateLimiting_; - } - - public static final int NUM_CALLS_FINISHED_WITH_DROP_FOR_LOAD_BALANCING_FIELD_NUMBER = 5; - private long numCallsFinishedWithDropForLoadBalancing_; - /** - *
-   * The total number of RPCs that were dropped by the client because of load
-   * balancing.
-   * 
- * - * int64 num_calls_finished_with_drop_for_load_balancing = 5; - */ - public long getNumCallsFinishedWithDropForLoadBalancing() { - return numCallsFinishedWithDropForLoadBalancing_; - } - public static final int NUM_CALLS_FINISHED_WITH_CLIENT_FAILED_TO_SEND_FIELD_NUMBER = 6; private long numCallsFinishedWithClientFailedToSend_; /** @@ -233,6 +207,61 @@ public final class ClientStats extends return numCallsFinishedKnownReceived_; } + public static final int CALLS_FINISHED_WITH_DROP_FIELD_NUMBER = 8; + private java.util.List callsFinishedWithDrop_; + /** + *
+   * The list of dropped calls.
+   * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public java.util.List getCallsFinishedWithDropList() { + return callsFinishedWithDrop_; + } + /** + *
+   * The list of dropped calls.
+   * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public java.util.List + getCallsFinishedWithDropOrBuilderList() { + return callsFinishedWithDrop_; + } + /** + *
+   * The list of dropped calls.
+   * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public int getCallsFinishedWithDropCount() { + return callsFinishedWithDrop_.size(); + } + /** + *
+   * The list of dropped calls.
+   * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public io.grpc.grpclb.ClientStatsPerToken getCallsFinishedWithDrop(int index) { + return callsFinishedWithDrop_.get(index); + } + /** + *
+   * The list of dropped calls.
+   * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public io.grpc.grpclb.ClientStatsPerTokenOrBuilder getCallsFinishedWithDropOrBuilder( + int index) { + return callsFinishedWithDrop_.get(index); + } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; @@ -254,18 +283,15 @@ public final class ClientStats extends if (numCallsFinished_ != 0L) { output.writeInt64(3, numCallsFinished_); } - if (numCallsFinishedWithDropForRateLimiting_ != 0L) { - output.writeInt64(4, numCallsFinishedWithDropForRateLimiting_); - } - if (numCallsFinishedWithDropForLoadBalancing_ != 0L) { - output.writeInt64(5, numCallsFinishedWithDropForLoadBalancing_); - } if (numCallsFinishedWithClientFailedToSend_ != 0L) { output.writeInt64(6, numCallsFinishedWithClientFailedToSend_); } if (numCallsFinishedKnownReceived_ != 0L) { output.writeInt64(7, numCallsFinishedKnownReceived_); } + for (int i = 0; i < callsFinishedWithDrop_.size(); i++) { + output.writeMessage(8, callsFinishedWithDrop_.get(i)); + } } public int getSerializedSize() { @@ -285,14 +311,6 @@ public final class ClientStats extends size += com.google.protobuf.CodedOutputStream .computeInt64Size(3, numCallsFinished_); } - if (numCallsFinishedWithDropForRateLimiting_ != 0L) { - size += com.google.protobuf.CodedOutputStream - .computeInt64Size(4, numCallsFinishedWithDropForRateLimiting_); - } - if (numCallsFinishedWithDropForLoadBalancing_ != 0L) { - size += com.google.protobuf.CodedOutputStream - .computeInt64Size(5, numCallsFinishedWithDropForLoadBalancing_); - } if (numCallsFinishedWithClientFailedToSend_ != 0L) { size += com.google.protobuf.CodedOutputStream .computeInt64Size(6, numCallsFinishedWithClientFailedToSend_); @@ -301,6 +319,10 @@ public final class ClientStats extends size += com.google.protobuf.CodedOutputStream .computeInt64Size(7, numCallsFinishedKnownReceived_); } + for (int i = 0; i < callsFinishedWithDrop_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(8, callsFinishedWithDrop_.get(i)); + } memoizedSize = size; return size; } @@ -326,14 +348,12 @@ public final class ClientStats extends == other.getNumCallsStarted()); result = result && (getNumCallsFinished() == other.getNumCallsFinished()); - result = result && (getNumCallsFinishedWithDropForRateLimiting() - == other.getNumCallsFinishedWithDropForRateLimiting()); - result = result && (getNumCallsFinishedWithDropForLoadBalancing() - == other.getNumCallsFinishedWithDropForLoadBalancing()); result = result && (getNumCallsFinishedWithClientFailedToSend() == other.getNumCallsFinishedWithClientFailedToSend()); result = result && (getNumCallsFinishedKnownReceived() == other.getNumCallsFinishedKnownReceived()); + result = result && getCallsFinishedWithDropList() + .equals(other.getCallsFinishedWithDropList()); return result; } @@ -354,18 +374,16 @@ public final class ClientStats extends hash = (37 * hash) + NUM_CALLS_FINISHED_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashLong( getNumCallsFinished()); - hash = (37 * hash) + NUM_CALLS_FINISHED_WITH_DROP_FOR_RATE_LIMITING_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashLong( - getNumCallsFinishedWithDropForRateLimiting()); - hash = (37 * hash) + NUM_CALLS_FINISHED_WITH_DROP_FOR_LOAD_BALANCING_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashLong( - getNumCallsFinishedWithDropForLoadBalancing()); hash = (37 * hash) + NUM_CALLS_FINISHED_WITH_CLIENT_FAILED_TO_SEND_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashLong( getNumCallsFinishedWithClientFailedToSend()); hash = (37 * hash) + NUM_CALLS_FINISHED_KNOWN_RECEIVED_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashLong( getNumCallsFinishedKnownReceived()); + if (getCallsFinishedWithDropCount() > 0) { + hash = (37 * hash) + CALLS_FINISHED_WITH_DROP_FIELD_NUMBER; + hash = (53 * hash) + getCallsFinishedWithDropList().hashCode(); + } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -496,6 +514,7 @@ public final class ClientStats extends private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3 .alwaysUseFieldBuilders) { + getCallsFinishedWithDropFieldBuilder(); } } public Builder clear() { @@ -510,14 +529,16 @@ public final class ClientStats extends numCallsFinished_ = 0L; - numCallsFinishedWithDropForRateLimiting_ = 0L; - - numCallsFinishedWithDropForLoadBalancing_ = 0L; - numCallsFinishedWithClientFailedToSend_ = 0L; numCallsFinishedKnownReceived_ = 0L; + if (callsFinishedWithDropBuilder_ == null) { + callsFinishedWithDrop_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000020); + } else { + callsFinishedWithDropBuilder_.clear(); + } return this; } @@ -540,6 +561,8 @@ public final class ClientStats extends public io.grpc.grpclb.ClientStats buildPartial() { io.grpc.grpclb.ClientStats result = new io.grpc.grpclb.ClientStats(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; if (timestampBuilder_ == null) { result.timestamp_ = timestamp_; } else { @@ -547,10 +570,18 @@ public final class ClientStats extends } result.numCallsStarted_ = numCallsStarted_; result.numCallsFinished_ = numCallsFinished_; - result.numCallsFinishedWithDropForRateLimiting_ = numCallsFinishedWithDropForRateLimiting_; - result.numCallsFinishedWithDropForLoadBalancing_ = numCallsFinishedWithDropForLoadBalancing_; result.numCallsFinishedWithClientFailedToSend_ = numCallsFinishedWithClientFailedToSend_; result.numCallsFinishedKnownReceived_ = numCallsFinishedKnownReceived_; + if (callsFinishedWithDropBuilder_ == null) { + if (((bitField0_ & 0x00000020) == 0x00000020)) { + callsFinishedWithDrop_ = java.util.Collections.unmodifiableList(callsFinishedWithDrop_); + bitField0_ = (bitField0_ & ~0x00000020); + } + result.callsFinishedWithDrop_ = callsFinishedWithDrop_; + } else { + result.callsFinishedWithDrop_ = callsFinishedWithDropBuilder_.build(); + } + result.bitField0_ = to_bitField0_; onBuilt(); return result; } @@ -601,18 +632,38 @@ public final class ClientStats extends if (other.getNumCallsFinished() != 0L) { setNumCallsFinished(other.getNumCallsFinished()); } - if (other.getNumCallsFinishedWithDropForRateLimiting() != 0L) { - setNumCallsFinishedWithDropForRateLimiting(other.getNumCallsFinishedWithDropForRateLimiting()); - } - if (other.getNumCallsFinishedWithDropForLoadBalancing() != 0L) { - setNumCallsFinishedWithDropForLoadBalancing(other.getNumCallsFinishedWithDropForLoadBalancing()); - } if (other.getNumCallsFinishedWithClientFailedToSend() != 0L) { setNumCallsFinishedWithClientFailedToSend(other.getNumCallsFinishedWithClientFailedToSend()); } if (other.getNumCallsFinishedKnownReceived() != 0L) { setNumCallsFinishedKnownReceived(other.getNumCallsFinishedKnownReceived()); } + if (callsFinishedWithDropBuilder_ == null) { + if (!other.callsFinishedWithDrop_.isEmpty()) { + if (callsFinishedWithDrop_.isEmpty()) { + callsFinishedWithDrop_ = other.callsFinishedWithDrop_; + bitField0_ = (bitField0_ & ~0x00000020); + } else { + ensureCallsFinishedWithDropIsMutable(); + callsFinishedWithDrop_.addAll(other.callsFinishedWithDrop_); + } + onChanged(); + } + } else { + if (!other.callsFinishedWithDrop_.isEmpty()) { + if (callsFinishedWithDropBuilder_.isEmpty()) { + callsFinishedWithDropBuilder_.dispose(); + callsFinishedWithDropBuilder_ = null; + callsFinishedWithDrop_ = other.callsFinishedWithDrop_; + bitField0_ = (bitField0_ & ~0x00000020); + callsFinishedWithDropBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getCallsFinishedWithDropFieldBuilder() : null; + } else { + callsFinishedWithDropBuilder_.addAllMessages(other.callsFinishedWithDrop_); + } + } + } onChanged(); return this; } @@ -638,6 +689,7 @@ public final class ClientStats extends } return this; } + private int bitField0_; private com.google.protobuf.Timestamp timestamp_ = null; private com.google.protobuf.SingleFieldBuilderV3< @@ -868,88 +920,6 @@ public final class ClientStats extends return this; } - private long numCallsFinishedWithDropForRateLimiting_ ; - /** - *
-     * The total number of RPCs that were dropped by the client because of rate
-     * limiting.
-     * 
- * - * int64 num_calls_finished_with_drop_for_rate_limiting = 4; - */ - public long getNumCallsFinishedWithDropForRateLimiting() { - return numCallsFinishedWithDropForRateLimiting_; - } - /** - *
-     * The total number of RPCs that were dropped by the client because of rate
-     * limiting.
-     * 
- * - * int64 num_calls_finished_with_drop_for_rate_limiting = 4; - */ - public Builder setNumCallsFinishedWithDropForRateLimiting(long value) { - - numCallsFinishedWithDropForRateLimiting_ = value; - onChanged(); - return this; - } - /** - *
-     * The total number of RPCs that were dropped by the client because of rate
-     * limiting.
-     * 
- * - * int64 num_calls_finished_with_drop_for_rate_limiting = 4; - */ - public Builder clearNumCallsFinishedWithDropForRateLimiting() { - - numCallsFinishedWithDropForRateLimiting_ = 0L; - onChanged(); - return this; - } - - private long numCallsFinishedWithDropForLoadBalancing_ ; - /** - *
-     * The total number of RPCs that were dropped by the client because of load
-     * balancing.
-     * 
- * - * int64 num_calls_finished_with_drop_for_load_balancing = 5; - */ - public long getNumCallsFinishedWithDropForLoadBalancing() { - return numCallsFinishedWithDropForLoadBalancing_; - } - /** - *
-     * The total number of RPCs that were dropped by the client because of load
-     * balancing.
-     * 
- * - * int64 num_calls_finished_with_drop_for_load_balancing = 5; - */ - public Builder setNumCallsFinishedWithDropForLoadBalancing(long value) { - - numCallsFinishedWithDropForLoadBalancing_ = value; - onChanged(); - return this; - } - /** - *
-     * The total number of RPCs that were dropped by the client because of load
-     * balancing.
-     * 
- * - * int64 num_calls_finished_with_drop_for_load_balancing = 5; - */ - public Builder clearNumCallsFinishedWithDropForLoadBalancing() { - - numCallsFinishedWithDropForLoadBalancing_ = 0L; - onChanged(); - return this; - } - private long numCallsFinishedWithClientFailedToSend_ ; /** *
@@ -1028,6 +998,318 @@ public  final class ClientStats extends
       onChanged();
       return this;
     }
+
+    private java.util.List callsFinishedWithDrop_ =
+      java.util.Collections.emptyList();
+    private void ensureCallsFinishedWithDropIsMutable() {
+      if (!((bitField0_ & 0x00000020) == 0x00000020)) {
+        callsFinishedWithDrop_ = new java.util.ArrayList(callsFinishedWithDrop_);
+        bitField0_ |= 0x00000020;
+       }
+    }
+
+    private com.google.protobuf.RepeatedFieldBuilderV3<
+        io.grpc.grpclb.ClientStatsPerToken, io.grpc.grpclb.ClientStatsPerToken.Builder, io.grpc.grpclb.ClientStatsPerTokenOrBuilder> callsFinishedWithDropBuilder_;
+
+    /**
+     * 
+     * The list of dropped calls.
+     * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public java.util.List getCallsFinishedWithDropList() { + if (callsFinishedWithDropBuilder_ == null) { + return java.util.Collections.unmodifiableList(callsFinishedWithDrop_); + } else { + return callsFinishedWithDropBuilder_.getMessageList(); + } + } + /** + *
+     * The list of dropped calls.
+     * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public int getCallsFinishedWithDropCount() { + if (callsFinishedWithDropBuilder_ == null) { + return callsFinishedWithDrop_.size(); + } else { + return callsFinishedWithDropBuilder_.getCount(); + } + } + /** + *
+     * The list of dropped calls.
+     * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public io.grpc.grpclb.ClientStatsPerToken getCallsFinishedWithDrop(int index) { + if (callsFinishedWithDropBuilder_ == null) { + return callsFinishedWithDrop_.get(index); + } else { + return callsFinishedWithDropBuilder_.getMessage(index); + } + } + /** + *
+     * The list of dropped calls.
+     * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public Builder setCallsFinishedWithDrop( + int index, io.grpc.grpclb.ClientStatsPerToken value) { + if (callsFinishedWithDropBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureCallsFinishedWithDropIsMutable(); + callsFinishedWithDrop_.set(index, value); + onChanged(); + } else { + callsFinishedWithDropBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+     * The list of dropped calls.
+     * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public Builder setCallsFinishedWithDrop( + int index, io.grpc.grpclb.ClientStatsPerToken.Builder builderForValue) { + if (callsFinishedWithDropBuilder_ == null) { + ensureCallsFinishedWithDropIsMutable(); + callsFinishedWithDrop_.set(index, builderForValue.build()); + onChanged(); + } else { + callsFinishedWithDropBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+     * The list of dropped calls.
+     * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public Builder addCallsFinishedWithDrop(io.grpc.grpclb.ClientStatsPerToken value) { + if (callsFinishedWithDropBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureCallsFinishedWithDropIsMutable(); + callsFinishedWithDrop_.add(value); + onChanged(); + } else { + callsFinishedWithDropBuilder_.addMessage(value); + } + return this; + } + /** + *
+     * The list of dropped calls.
+     * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public Builder addCallsFinishedWithDrop( + int index, io.grpc.grpclb.ClientStatsPerToken value) { + if (callsFinishedWithDropBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureCallsFinishedWithDropIsMutable(); + callsFinishedWithDrop_.add(index, value); + onChanged(); + } else { + callsFinishedWithDropBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+     * The list of dropped calls.
+     * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public Builder addCallsFinishedWithDrop( + io.grpc.grpclb.ClientStatsPerToken.Builder builderForValue) { + if (callsFinishedWithDropBuilder_ == null) { + ensureCallsFinishedWithDropIsMutable(); + callsFinishedWithDrop_.add(builderForValue.build()); + onChanged(); + } else { + callsFinishedWithDropBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+     * The list of dropped calls.
+     * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public Builder addCallsFinishedWithDrop( + int index, io.grpc.grpclb.ClientStatsPerToken.Builder builderForValue) { + if (callsFinishedWithDropBuilder_ == null) { + ensureCallsFinishedWithDropIsMutable(); + callsFinishedWithDrop_.add(index, builderForValue.build()); + onChanged(); + } else { + callsFinishedWithDropBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+     * The list of dropped calls.
+     * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public Builder addAllCallsFinishedWithDrop( + java.lang.Iterable values) { + if (callsFinishedWithDropBuilder_ == null) { + ensureCallsFinishedWithDropIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, callsFinishedWithDrop_); + onChanged(); + } else { + callsFinishedWithDropBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+     * The list of dropped calls.
+     * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public Builder clearCallsFinishedWithDrop() { + if (callsFinishedWithDropBuilder_ == null) { + callsFinishedWithDrop_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000020); + onChanged(); + } else { + callsFinishedWithDropBuilder_.clear(); + } + return this; + } + /** + *
+     * The list of dropped calls.
+     * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public Builder removeCallsFinishedWithDrop(int index) { + if (callsFinishedWithDropBuilder_ == null) { + ensureCallsFinishedWithDropIsMutable(); + callsFinishedWithDrop_.remove(index); + onChanged(); + } else { + callsFinishedWithDropBuilder_.remove(index); + } + return this; + } + /** + *
+     * The list of dropped calls.
+     * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public io.grpc.grpclb.ClientStatsPerToken.Builder getCallsFinishedWithDropBuilder( + int index) { + return getCallsFinishedWithDropFieldBuilder().getBuilder(index); + } + /** + *
+     * The list of dropped calls.
+     * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public io.grpc.grpclb.ClientStatsPerTokenOrBuilder getCallsFinishedWithDropOrBuilder( + int index) { + if (callsFinishedWithDropBuilder_ == null) { + return callsFinishedWithDrop_.get(index); } else { + return callsFinishedWithDropBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+     * The list of dropped calls.
+     * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public java.util.List + getCallsFinishedWithDropOrBuilderList() { + if (callsFinishedWithDropBuilder_ != null) { + return callsFinishedWithDropBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(callsFinishedWithDrop_); + } + } + /** + *
+     * The list of dropped calls.
+     * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public io.grpc.grpclb.ClientStatsPerToken.Builder addCallsFinishedWithDropBuilder() { + return getCallsFinishedWithDropFieldBuilder().addBuilder( + io.grpc.grpclb.ClientStatsPerToken.getDefaultInstance()); + } + /** + *
+     * The list of dropped calls.
+     * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public io.grpc.grpclb.ClientStatsPerToken.Builder addCallsFinishedWithDropBuilder( + int index) { + return getCallsFinishedWithDropFieldBuilder().addBuilder( + index, io.grpc.grpclb.ClientStatsPerToken.getDefaultInstance()); + } + /** + *
+     * The list of dropped calls.
+     * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + public java.util.List + getCallsFinishedWithDropBuilderList() { + return getCallsFinishedWithDropFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + io.grpc.grpclb.ClientStatsPerToken, io.grpc.grpclb.ClientStatsPerToken.Builder, io.grpc.grpclb.ClientStatsPerTokenOrBuilder> + getCallsFinishedWithDropFieldBuilder() { + if (callsFinishedWithDropBuilder_ == null) { + callsFinishedWithDropBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + io.grpc.grpclb.ClientStatsPerToken, io.grpc.grpclb.ClientStatsPerToken.Builder, io.grpc.grpclb.ClientStatsPerTokenOrBuilder>( + callsFinishedWithDrop_, + ((bitField0_ & 0x00000020) == 0x00000020), + getParentForChildren(), + isClean()); + callsFinishedWithDrop_ = null; + } + return callsFinishedWithDropBuilder_; + } public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return this; diff --git a/grpclb/src/generated/main/java/io/grpc/grpclb/ClientStatsOrBuilder.java b/grpclb/src/generated/main/java/io/grpc/grpclb/ClientStatsOrBuilder.java index f0d8e1bbde..60877e7e9c 100644 --- a/grpclb/src/generated/main/java/io/grpc/grpclb/ClientStatsOrBuilder.java +++ b/grpclb/src/generated/main/java/io/grpc/grpclb/ClientStatsOrBuilder.java @@ -50,26 +50,6 @@ public interface ClientStatsOrBuilder extends */ long getNumCallsFinished(); - /** - *
-   * The total number of RPCs that were dropped by the client because of rate
-   * limiting.
-   * 
- * - * int64 num_calls_finished_with_drop_for_rate_limiting = 4; - */ - long getNumCallsFinishedWithDropForRateLimiting(); - - /** - *
-   * The total number of RPCs that were dropped by the client because of load
-   * balancing.
-   * 
- * - * int64 num_calls_finished_with_drop_for_load_balancing = 5; - */ - long getNumCallsFinishedWithDropForLoadBalancing(); - /** *
    * The total number of RPCs that failed to reach a server except dropped RPCs.
@@ -88,4 +68,48 @@ public interface ClientStatsOrBuilder extends
    * int64 num_calls_finished_known_received = 7;
    */
   long getNumCallsFinishedKnownReceived();
+
+  /**
+   * 
+   * The list of dropped calls.
+   * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + java.util.List + getCallsFinishedWithDropList(); + /** + *
+   * The list of dropped calls.
+   * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + io.grpc.grpclb.ClientStatsPerToken getCallsFinishedWithDrop(int index); + /** + *
+   * The list of dropped calls.
+   * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + int getCallsFinishedWithDropCount(); + /** + *
+   * The list of dropped calls.
+   * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + java.util.List + getCallsFinishedWithDropOrBuilderList(); + /** + *
+   * The list of dropped calls.
+   * 
+ * + * repeated .grpc.lb.v1.ClientStatsPerToken calls_finished_with_drop = 8; + */ + io.grpc.grpclb.ClientStatsPerTokenOrBuilder getCallsFinishedWithDropOrBuilder( + int index); } diff --git a/grpclb/src/generated/main/java/io/grpc/grpclb/ClientStatsPerToken.java b/grpclb/src/generated/main/java/io/grpc/grpclb/ClientStatsPerToken.java new file mode 100644 index 0000000000..13644c1775 --- /dev/null +++ b/grpclb/src/generated/main/java/io/grpc/grpclb/ClientStatsPerToken.java @@ -0,0 +1,616 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: load_balancer.proto + +package io.grpc.grpclb; + +/** + *
+ * Contains the number of calls finished for a particular load balance token.
+ * 
+ * + * Protobuf type {@code grpc.lb.v1.ClientStatsPerToken} + */ +public final class ClientStatsPerToken extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:grpc.lb.v1.ClientStatsPerToken) + ClientStatsPerTokenOrBuilder { + // Use ClientStatsPerToken.newBuilder() to construct. + private ClientStatsPerToken(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private ClientStatsPerToken() { + loadBalanceToken_ = ""; + numCalls_ = 0L; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); + } + private ClientStatsPerToken( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!input.skipField(tag)) { + done = true; + } + break; + } + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + loadBalanceToken_ = s; + break; + } + case 16: { + + numCalls_ = input.readInt64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return io.grpc.grpclb.LoadBalancerProto.internal_static_grpc_lb_v1_ClientStatsPerToken_descriptor; + } + + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return io.grpc.grpclb.LoadBalancerProto.internal_static_grpc_lb_v1_ClientStatsPerToken_fieldAccessorTable + .ensureFieldAccessorsInitialized( + io.grpc.grpclb.ClientStatsPerToken.class, io.grpc.grpclb.ClientStatsPerToken.Builder.class); + } + + public static final int LOAD_BALANCE_TOKEN_FIELD_NUMBER = 1; + private volatile java.lang.Object loadBalanceToken_; + /** + *
+   * See Server.load_balance_token.
+   * 
+ * + * string load_balance_token = 1; + */ + public java.lang.String getLoadBalanceToken() { + java.lang.Object ref = loadBalanceToken_; + 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(); + loadBalanceToken_ = s; + return s; + } + } + /** + *
+   * See Server.load_balance_token.
+   * 
+ * + * string load_balance_token = 1; + */ + public com.google.protobuf.ByteString + getLoadBalanceTokenBytes() { + java.lang.Object ref = loadBalanceToken_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + loadBalanceToken_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int NUM_CALLS_FIELD_NUMBER = 2; + private long numCalls_; + /** + *
+   * The total number of RPCs that finished associated with the token.
+   * 
+ * + * int64 num_calls = 2; + */ + public long getNumCalls() { + return numCalls_; + } + + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getLoadBalanceTokenBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, loadBalanceToken_); + } + if (numCalls_ != 0L) { + output.writeInt64(2, numCalls_); + } + } + + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getLoadBalanceTokenBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, loadBalanceToken_); + } + if (numCalls_ != 0L) { + size += com.google.protobuf.CodedOutputStream + .computeInt64Size(2, numCalls_); + } + memoizedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof io.grpc.grpclb.ClientStatsPerToken)) { + return super.equals(obj); + } + io.grpc.grpclb.ClientStatsPerToken other = (io.grpc.grpclb.ClientStatsPerToken) obj; + + boolean result = true; + result = result && getLoadBalanceToken() + .equals(other.getLoadBalanceToken()); + result = result && (getNumCalls() + == other.getNumCalls()); + return result; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + LOAD_BALANCE_TOKEN_FIELD_NUMBER; + hash = (53 * hash) + getLoadBalanceToken().hashCode(); + hash = (37 * hash) + NUM_CALLS_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getNumCalls()); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static io.grpc.grpclb.ClientStatsPerToken parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static io.grpc.grpclb.ClientStatsPerToken parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static io.grpc.grpclb.ClientStatsPerToken parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static io.grpc.grpclb.ClientStatsPerToken parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static io.grpc.grpclb.ClientStatsPerToken parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static io.grpc.grpclb.ClientStatsPerToken parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static io.grpc.grpclb.ClientStatsPerToken parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static io.grpc.grpclb.ClientStatsPerToken parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static io.grpc.grpclb.ClientStatsPerToken parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static io.grpc.grpclb.ClientStatsPerToken parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static io.grpc.grpclb.ClientStatsPerToken parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static io.grpc.grpclb.ClientStatsPerToken parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(io.grpc.grpclb.ClientStatsPerToken prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+   * Contains the number of calls finished for a particular load balance token.
+   * 
+ * + * Protobuf type {@code grpc.lb.v1.ClientStatsPerToken} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:grpc.lb.v1.ClientStatsPerToken) + io.grpc.grpclb.ClientStatsPerTokenOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return io.grpc.grpclb.LoadBalancerProto.internal_static_grpc_lb_v1_ClientStatsPerToken_descriptor; + } + + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return io.grpc.grpclb.LoadBalancerProto.internal_static_grpc_lb_v1_ClientStatsPerToken_fieldAccessorTable + .ensureFieldAccessorsInitialized( + io.grpc.grpclb.ClientStatsPerToken.class, io.grpc.grpclb.ClientStatsPerToken.Builder.class); + } + + // Construct using io.grpc.grpclb.ClientStatsPerToken.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + public Builder clear() { + super.clear(); + loadBalanceToken_ = ""; + + numCalls_ = 0L; + + return this; + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return io.grpc.grpclb.LoadBalancerProto.internal_static_grpc_lb_v1_ClientStatsPerToken_descriptor; + } + + public io.grpc.grpclb.ClientStatsPerToken getDefaultInstanceForType() { + return io.grpc.grpclb.ClientStatsPerToken.getDefaultInstance(); + } + + public io.grpc.grpclb.ClientStatsPerToken build() { + io.grpc.grpclb.ClientStatsPerToken result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public io.grpc.grpclb.ClientStatsPerToken buildPartial() { + io.grpc.grpclb.ClientStatsPerToken result = new io.grpc.grpclb.ClientStatsPerToken(this); + result.loadBalanceToken_ = loadBalanceToken_; + result.numCalls_ = numCalls_; + onBuilt(); + return result; + } + + public Builder clone() { + return (Builder) super.clone(); + } + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + Object value) { + return (Builder) super.setField(field, value); + } + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return (Builder) super.clearField(field); + } + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return (Builder) super.clearOneof(oneof); + } + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, Object value) { + return (Builder) super.setRepeatedField(field, index, value); + } + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + Object value) { + return (Builder) super.addRepeatedField(field, value); + } + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof io.grpc.grpclb.ClientStatsPerToken) { + return mergeFrom((io.grpc.grpclb.ClientStatsPerToken)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(io.grpc.grpclb.ClientStatsPerToken other) { + if (other == io.grpc.grpclb.ClientStatsPerToken.getDefaultInstance()) return this; + if (!other.getLoadBalanceToken().isEmpty()) { + loadBalanceToken_ = other.loadBalanceToken_; + onChanged(); + } + if (other.getNumCalls() != 0L) { + setNumCalls(other.getNumCalls()); + } + onChanged(); + return this; + } + + public final boolean isInitialized() { + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + io.grpc.grpclb.ClientStatsPerToken parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (io.grpc.grpclb.ClientStatsPerToken) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object loadBalanceToken_ = ""; + /** + *
+     * See Server.load_balance_token.
+     * 
+ * + * string load_balance_token = 1; + */ + public java.lang.String getLoadBalanceToken() { + java.lang.Object ref = loadBalanceToken_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + loadBalanceToken_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * See Server.load_balance_token.
+     * 
+ * + * string load_balance_token = 1; + */ + public com.google.protobuf.ByteString + getLoadBalanceTokenBytes() { + java.lang.Object ref = loadBalanceToken_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + loadBalanceToken_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * See Server.load_balance_token.
+     * 
+ * + * string load_balance_token = 1; + */ + public Builder setLoadBalanceToken( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + loadBalanceToken_ = value; + onChanged(); + return this; + } + /** + *
+     * See Server.load_balance_token.
+     * 
+ * + * string load_balance_token = 1; + */ + public Builder clearLoadBalanceToken() { + + loadBalanceToken_ = getDefaultInstance().getLoadBalanceToken(); + onChanged(); + return this; + } + /** + *
+     * See Server.load_balance_token.
+     * 
+ * + * string load_balance_token = 1; + */ + public Builder setLoadBalanceTokenBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + loadBalanceToken_ = value; + onChanged(); + return this; + } + + private long numCalls_ ; + /** + *
+     * The total number of RPCs that finished associated with the token.
+     * 
+ * + * int64 num_calls = 2; + */ + public long getNumCalls() { + return numCalls_; + } + /** + *
+     * The total number of RPCs that finished associated with the token.
+     * 
+ * + * int64 num_calls = 2; + */ + public Builder setNumCalls(long value) { + + numCalls_ = value; + onChanged(); + return this; + } + /** + *
+     * The total number of RPCs that finished associated with the token.
+     * 
+ * + * int64 num_calls = 2; + */ + public Builder clearNumCalls() { + + numCalls_ = 0L; + onChanged(); + return this; + } + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return this; + } + + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return this; + } + + + // @@protoc_insertion_point(builder_scope:grpc.lb.v1.ClientStatsPerToken) + } + + // @@protoc_insertion_point(class_scope:grpc.lb.v1.ClientStatsPerToken) + private static final io.grpc.grpclb.ClientStatsPerToken DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new io.grpc.grpclb.ClientStatsPerToken(); + } + + public static io.grpc.grpclb.ClientStatsPerToken getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + public ClientStatsPerToken parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ClientStatsPerToken(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + public io.grpc.grpclb.ClientStatsPerToken getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/grpclb/src/generated/main/java/io/grpc/grpclb/ClientStatsPerTokenOrBuilder.java b/grpclb/src/generated/main/java/io/grpc/grpclb/ClientStatsPerTokenOrBuilder.java new file mode 100644 index 0000000000..8efa30ed5c --- /dev/null +++ b/grpclb/src/generated/main/java/io/grpc/grpclb/ClientStatsPerTokenOrBuilder.java @@ -0,0 +1,36 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: load_balancer.proto + +package io.grpc.grpclb; + +public interface ClientStatsPerTokenOrBuilder extends + // @@protoc_insertion_point(interface_extends:grpc.lb.v1.ClientStatsPerToken) + com.google.protobuf.MessageOrBuilder { + + /** + *
+   * See Server.load_balance_token.
+   * 
+ * + * string load_balance_token = 1; + */ + java.lang.String getLoadBalanceToken(); + /** + *
+   * See Server.load_balance_token.
+   * 
+ * + * string load_balance_token = 1; + */ + com.google.protobuf.ByteString + getLoadBalanceTokenBytes(); + + /** + *
+   * The total number of RPCs that finished associated with the token.
+   * 
+ * + * int64 num_calls = 2; + */ + long getNumCalls(); +} 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 1406cf95e2..893da18a68 100644 --- a/grpclb/src/generated/main/java/io/grpc/grpclb/LoadBalancerProto.java +++ b/grpclb/src/generated/main/java/io/grpc/grpclb/LoadBalancerProto.java @@ -24,6 +24,11 @@ public final class LoadBalancerProto { static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_grpc_lb_v1_InitialLoadBalanceRequest_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_grpc_lb_v1_ClientStatsPerToken_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_grpc_lb_v1_ClientStatsPerToken_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor internal_static_grpc_lb_v1_ClientStats_descriptor; static final @@ -65,33 +70,32 @@ public final class LoadBalancerProto { "InitialLoadBalanceRequestH\000\022/\n\014client_st" + "ats\030\002 \001(\0132\027.grpc.lb.v1.ClientStatsH\000B\033\n\031" + "load_balance_request_type\")\n\031InitialLoad" + - "BalanceRequest\022\014\n\004name\030\001 \001(\t\"\306\002\n\013ClientS" + - "tats\022-\n\ttimestamp\030\001 \001(\0132\032.google.protobu" + - "f.Timestamp\022\031\n\021num_calls_started\030\002 \001(\003\022\032", - "\n\022num_calls_finished\030\003 \001(\003\0226\n.num_calls_" + - "finished_with_drop_for_rate_limiting\030\004 \001" + - "(\003\0227\n/num_calls_finished_with_drop_for_l" + - "oad_balancing\030\005 \001(\003\0225\n-num_calls_finishe" + - "d_with_client_failed_to_send\030\006 \001(\003\022)\n!nu" + - "m_calls_finished_known_received\030\007 \001(\003\"\246\001" + - "\n\023LoadBalanceResponse\022B\n\020initial_respons" + - "e\030\001 \001(\0132&.grpc.lb.v1.InitialLoadBalanceR" + - "esponseH\000\022-\n\013server_list\030\002 \001(\0132\026.grpc.lb" + - ".v1.ServerListH\000B\034\n\032load_balance_respons", - "e_type\"}\n\032InitialLoadBalanceResponse\022\036\n\026" + - "load_balancer_delegate\030\001 \001(\t\022?\n\034client_s" + - "tats_report_interval\030\002 \001(\0132\031.google.prot" + - "obuf.Duration\"i\n\nServerList\022#\n\007servers\030\001" + - " \003(\0132\022.grpc.lb.v1.Server\0226\n\023expiration_i" + - "nterval\030\003 \001(\0132\031.google.protobuf.Duration" + - "\"\207\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\036\n\026dro" + - "p_for_rate_limiting\030\004 \001(\010\022\037\n\027drop_for_lo" + - "ad_balancing\030\005 \001(\0102b\n\014LoadBalancer\022R\n\013Ba", - "lanceLoad\022\036.grpc.lb.v1.LoadBalanceReques" + - "t\032\037.grpc.lb.v1.LoadBalanceResponse(\0010\001B%" + - "\n\016io.grpc.grpclbB\021LoadBalancerProtoP\001b\006p" + - "roto3" + "BalanceRequest\022\014\n\004name\030\001 \001(\t\"D\n\023ClientSt" + + "atsPerToken\022\032\n\022load_balance_token\030\001 \001(\t\022" + + "\021\n\tnum_calls\030\002 \001(\003\"\244\002\n\013ClientStats\022-\n\tti", + "mestamp\030\001 \001(\0132\032.google.protobuf.Timestam" + + "p\022\031\n\021num_calls_started\030\002 \001(\003\022\032\n\022num_call" + + "s_finished\030\003 \001(\003\0225\n-num_calls_finished_w" + + "ith_client_failed_to_send\030\006 \001(\003\022)\n!num_c" + + "alls_finished_known_received\030\007 \001(\003\022A\n\030ca" + + "lls_finished_with_drop\030\010 \003(\0132\037.grpc.lb.v" + + "1.ClientStatsPerTokenJ\004\010\004\020\005J\004\010\005\020\006\"\246\001\n\023Lo" + + "adBalanceResponse\022B\n\020initial_response\030\001 " + + "\001(\0132&.grpc.lb.v1.InitialLoadBalanceRespo" + + "nseH\000\022-\n\013server_list\030\002 \001(\0132\026.grpc.lb.v1.", + "ServerListH\000B\034\n\032load_balance_response_ty" + + "pe\"}\n\032InitialLoadBalanceResponse\022\036\n\026load" + + "_balancer_delegate\030\001 \001(\t\022?\n\034client_stats" + + "_report_interval\030\002 \001(\0132\031.google.protobuf" + + ".Duration\"i\n\nServerList\022#\n\007servers\030\001 \003(\013" + + "2\022.grpc.lb.v1.Server\0226\n\023expiration_inter" + + "val\030\003 \001(\0132\031.google.protobuf.Duration\"Z\n\006" + + "Server\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\014\n\004drop\030\004 \001" + + "(\010J\004\010\005\020\0062b\n\014LoadBalancer\022R\n\013BalanceLoad\022", + "\036.grpc.lb.v1.LoadBalanceRequest\032\037.grpc.l" + + "b.v1.LoadBalanceResponse(\0010\001B%\n\016io.grpc." + + "grpclbB\021LoadBalancerProtoP\001b\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -119,36 +123,42 @@ public final class LoadBalancerProto { com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_grpc_lb_v1_InitialLoadBalanceRequest_descriptor, new java.lang.String[] { "Name", }); - internal_static_grpc_lb_v1_ClientStats_descriptor = + internal_static_grpc_lb_v1_ClientStatsPerToken_descriptor = getDescriptor().getMessageTypes().get(2); + internal_static_grpc_lb_v1_ClientStatsPerToken_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_grpc_lb_v1_ClientStatsPerToken_descriptor, + new java.lang.String[] { "LoadBalanceToken", "NumCalls", }); + internal_static_grpc_lb_v1_ClientStats_descriptor = + getDescriptor().getMessageTypes().get(3); internal_static_grpc_lb_v1_ClientStats_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_grpc_lb_v1_ClientStats_descriptor, - new java.lang.String[] { "Timestamp", "NumCallsStarted", "NumCallsFinished", "NumCallsFinishedWithDropForRateLimiting", "NumCallsFinishedWithDropForLoadBalancing", "NumCallsFinishedWithClientFailedToSend", "NumCallsFinishedKnownReceived", }); + new java.lang.String[] { "Timestamp", "NumCallsStarted", "NumCallsFinished", "NumCallsFinishedWithClientFailedToSend", "NumCallsFinishedKnownReceived", "CallsFinishedWithDrop", }); internal_static_grpc_lb_v1_LoadBalanceResponse_descriptor = - getDescriptor().getMessageTypes().get(3); + getDescriptor().getMessageTypes().get(4); internal_static_grpc_lb_v1_LoadBalanceResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_grpc_lb_v1_LoadBalanceResponse_descriptor, new java.lang.String[] { "InitialResponse", "ServerList", "LoadBalanceResponseType", }); internal_static_grpc_lb_v1_InitialLoadBalanceResponse_descriptor = - getDescriptor().getMessageTypes().get(4); + getDescriptor().getMessageTypes().get(5); internal_static_grpc_lb_v1_InitialLoadBalanceResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_grpc_lb_v1_InitialLoadBalanceResponse_descriptor, new java.lang.String[] { "LoadBalancerDelegate", "ClientStatsReportInterval", }); internal_static_grpc_lb_v1_ServerList_descriptor = - getDescriptor().getMessageTypes().get(5); + getDescriptor().getMessageTypes().get(6); internal_static_grpc_lb_v1_ServerList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_grpc_lb_v1_ServerList_descriptor, new java.lang.String[] { "Servers", "ExpirationInterval", }); internal_static_grpc_lb_v1_Server_descriptor = - getDescriptor().getMessageTypes().get(6); + getDescriptor().getMessageTypes().get(7); internal_static_grpc_lb_v1_Server_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_grpc_lb_v1_Server_descriptor, - new java.lang.String[] { "IpAddress", "Port", "LoadBalanceToken", "DropForRateLimiting", "DropForLoadBalancing", }); + new java.lang.String[] { "IpAddress", "Port", "LoadBalanceToken", "Drop", }); com.google.protobuf.DurationProto.getDescriptor(); com.google.protobuf.TimestampProto.getDescriptor(); } 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 c191bb2f58..037bc87a6e 100644 --- a/grpclb/src/generated/main/java/io/grpc/grpclb/Server.java +++ b/grpclb/src/generated/main/java/io/grpc/grpclb/Server.java @@ -5,10 +5,8 @@ package io.grpc.grpclb; /** *
- * Contains server information. When none of the [drop_for_*] fields are true,
- * use the other fields. When drop_for_rate_limiting is true, ignore all other
- * fields. Use drop_for_load_balancing only when it is true and
- * drop_for_rate_limiting is false.
+ * Contains server information. When the drop field is not true, use the other
+ * fields.
  * 
* * Protobuf type {@code grpc.lb.v1.Server} @@ -25,8 +23,7 @@ public final class Server extends ipAddress_ = com.google.protobuf.ByteString.EMPTY; port_ = 0; loadBalanceToken_ = ""; - dropForRateLimiting_ = false; - dropForLoadBalancing_ = false; + drop_ = false; } @java.lang.Override @@ -72,12 +69,7 @@ public final class Server extends } case 32: { - dropForRateLimiting_ = input.readBool(); - break; - } - case 40: { - - dropForLoadBalancing_ = input.readBool(); + drop_ = input.readBool(); break; } } @@ -137,7 +129,8 @@ public final class Server extends * An opaque but printable token given to the frontend for each pick. All * frontend requests for that pick must include the token in its initial * metadata. The token is used by the backend to verify the request and to - * allow the backend to report load to the gRPC LB system. + * allow the backend to report load to the gRPC LB system. The token is also + * used in client stats for reporting dropped calls. *
* * string load_balance_token = 3; @@ -159,7 +152,8 @@ public final class Server extends * An opaque but printable token given to the frontend for each pick. All * frontend requests for that pick must include the token in its initial * metadata. The token is used by the backend to verify the request and to - * allow the backend to report load to the gRPC LB system. + * allow the backend to report load to the gRPC LB system. The token is also + * used in client stats for reporting dropped calls. *
* * string load_balance_token = 3; @@ -178,32 +172,19 @@ public final class Server extends } } - public static final int DROP_FOR_RATE_LIMITING_FIELD_NUMBER = 4; - private boolean dropForRateLimiting_; + public static final int DROP_FIELD_NUMBER = 4; + private boolean drop_; /** *
-   * Indicates whether this particular request should be dropped by the client
-   * for rate limiting.
+   * Indicates whether this particular request should be dropped by the client.
+   * If the request is dropped, there will be a corresponding entry in
+   * ClientStats.calls_finished_with_drop.
    * 
* - * bool drop_for_rate_limiting = 4; + * bool drop = 4; */ - public boolean getDropForRateLimiting() { - return dropForRateLimiting_; - } - - public static final int DROP_FOR_LOAD_BALANCING_FIELD_NUMBER = 5; - private boolean dropForLoadBalancing_; - /** - *
-   * Indicates whether this particular request should be dropped by the client
-   * for load balancing.
-   * 
- * - * bool drop_for_load_balancing = 5; - */ - public boolean getDropForLoadBalancing() { - return dropForLoadBalancing_; + public boolean getDrop() { + return drop_; } private byte memoizedIsInitialized = -1; @@ -227,11 +208,8 @@ public final class Server extends if (!getLoadBalanceTokenBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 3, loadBalanceToken_); } - if (dropForRateLimiting_ != false) { - output.writeBool(4, dropForRateLimiting_); - } - if (dropForLoadBalancing_ != false) { - output.writeBool(5, dropForLoadBalancing_); + if (drop_ != false) { + output.writeBool(4, drop_); } } @@ -251,13 +229,9 @@ public final class Server extends if (!getLoadBalanceTokenBytes().isEmpty()) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, loadBalanceToken_); } - if (dropForRateLimiting_ != false) { + if (drop_ != false) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(4, dropForRateLimiting_); - } - if (dropForLoadBalancing_ != false) { - size += com.google.protobuf.CodedOutputStream - .computeBoolSize(5, dropForLoadBalancing_); + .computeBoolSize(4, drop_); } memoizedSize = size; return size; @@ -281,10 +255,8 @@ public final class Server extends == other.getPort()); result = result && getLoadBalanceToken() .equals(other.getLoadBalanceToken()); - result = result && (getDropForRateLimiting() - == other.getDropForRateLimiting()); - result = result && (getDropForLoadBalancing() - == other.getDropForLoadBalancing()); + result = result && (getDrop() + == other.getDrop()); return result; } @@ -301,12 +273,9 @@ public final class Server extends hash = (53 * hash) + getPort(); hash = (37 * hash) + LOAD_BALANCE_TOKEN_FIELD_NUMBER; hash = (53 * hash) + getLoadBalanceToken().hashCode(); - hash = (37 * hash) + DROP_FOR_RATE_LIMITING_FIELD_NUMBER; + hash = (37 * hash) + DROP_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( - getDropForRateLimiting()); - hash = (37 * hash) + DROP_FOR_LOAD_BALANCING_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( - getDropForLoadBalancing()); + getDrop()); hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -402,10 +371,8 @@ public final class Server extends } /** *
-   * Contains server information. When none of the [drop_for_*] fields are true,
-   * use the other fields. When drop_for_rate_limiting is true, ignore all other
-   * fields. Use drop_for_load_balancing only when it is true and
-   * drop_for_rate_limiting is false.
+   * Contains server information. When the drop field is not true, use the other
+   * fields.
    * 
* * Protobuf type {@code grpc.lb.v1.Server} @@ -449,9 +416,7 @@ public final class Server extends loadBalanceToken_ = ""; - dropForRateLimiting_ = false; - - dropForLoadBalancing_ = false; + drop_ = false; return this; } @@ -478,8 +443,7 @@ public final class Server extends result.ipAddress_ = ipAddress_; result.port_ = port_; result.loadBalanceToken_ = loadBalanceToken_; - result.dropForRateLimiting_ = dropForRateLimiting_; - result.dropForLoadBalancing_ = dropForLoadBalancing_; + result.drop_ = drop_; onBuilt(); return result; } @@ -531,11 +495,8 @@ public final class Server extends loadBalanceToken_ = other.loadBalanceToken_; onChanged(); } - if (other.getDropForRateLimiting() != false) { - setDropForRateLimiting(other.getDropForRateLimiting()); - } - if (other.getDropForLoadBalancing() != false) { - setDropForLoadBalancing(other.getDropForLoadBalancing()); + if (other.getDrop() != false) { + setDrop(other.getDrop()); } onChanged(); return this; @@ -651,7 +612,8 @@ public final class Server extends * An opaque but printable token given to the frontend for each pick. All * frontend requests for that pick must include the token in its initial * metadata. The token is used by the backend to verify the request and to - * allow the backend to report load to the gRPC LB system. + * allow the backend to report load to the gRPC LB system. The token is also + * used in client stats for reporting dropped calls. * * * string load_balance_token = 3; @@ -673,7 +635,8 @@ public final class Server extends * An opaque but printable token given to the frontend for each pick. All * frontend requests for that pick must include the token in its initial * metadata. The token is used by the backend to verify the request and to - * allow the backend to report load to the gRPC LB system. + * allow the backend to report load to the gRPC LB system. The token is also + * used in client stats for reporting dropped calls. * * * string load_balance_token = 3; @@ -696,7 +659,8 @@ public final class Server extends * An opaque but printable token given to the frontend for each pick. All * frontend requests for that pick must include the token in its initial * metadata. The token is used by the backend to verify the request and to - * allow the backend to report load to the gRPC LB system. + * allow the backend to report load to the gRPC LB system. The token is also + * used in client stats for reporting dropped calls. * * * string load_balance_token = 3; @@ -716,7 +680,8 @@ public final class Server extends * An opaque but printable token given to the frontend for each pick. All * frontend requests for that pick must include the token in its initial * metadata. The token is used by the backend to verify the request and to - * allow the backend to report load to the gRPC LB system. + * allow the backend to report load to the gRPC LB system. The token is also + * used in client stats for reporting dropped calls. * * * string load_balance_token = 3; @@ -732,7 +697,8 @@ public final class Server extends * An opaque but printable token given to the frontend for each pick. All * frontend requests for that pick must include the token in its initial * metadata. The token is used by the backend to verify the request and to - * allow the backend to report load to the gRPC LB system. + * allow the backend to report load to the gRPC LB system. The token is also + * used in client stats for reporting dropped calls. * * * string load_balance_token = 3; @@ -749,84 +715,46 @@ public final class Server extends return this; } - private boolean dropForRateLimiting_ ; + private boolean drop_ ; /** *
-     * Indicates whether this particular request should be dropped by the client
-     * for rate limiting.
+     * Indicates whether this particular request should be dropped by the client.
+     * If the request is dropped, there will be a corresponding entry in
+     * ClientStats.calls_finished_with_drop.
      * 
* - * bool drop_for_rate_limiting = 4; + * bool drop = 4; */ - public boolean getDropForRateLimiting() { - return dropForRateLimiting_; + public boolean getDrop() { + return drop_; } /** *
-     * Indicates whether this particular request should be dropped by the client
-     * for rate limiting.
+     * Indicates whether this particular request should be dropped by the client.
+     * If the request is dropped, there will be a corresponding entry in
+     * ClientStats.calls_finished_with_drop.
      * 
* - * bool drop_for_rate_limiting = 4; + * bool drop = 4; */ - public Builder setDropForRateLimiting(boolean value) { + public Builder setDrop(boolean value) { - dropForRateLimiting_ = value; + drop_ = value; onChanged(); return this; } /** *
-     * Indicates whether this particular request should be dropped by the client
-     * for rate limiting.
+     * Indicates whether this particular request should be dropped by the client.
+     * If the request is dropped, there will be a corresponding entry in
+     * ClientStats.calls_finished_with_drop.
      * 
* - * bool drop_for_rate_limiting = 4; + * bool drop = 4; */ - public Builder clearDropForRateLimiting() { + public Builder clearDrop() { - dropForRateLimiting_ = false; - onChanged(); - return this; - } - - private boolean dropForLoadBalancing_ ; - /** - *
-     * Indicates whether this particular request should be dropped by the client
-     * for load balancing.
-     * 
- * - * bool drop_for_load_balancing = 5; - */ - public boolean getDropForLoadBalancing() { - return dropForLoadBalancing_; - } - /** - *
-     * Indicates whether this particular request should be dropped by the client
-     * for load balancing.
-     * 
- * - * bool drop_for_load_balancing = 5; - */ - public Builder setDropForLoadBalancing(boolean value) { - - dropForLoadBalancing_ = value; - onChanged(); - return this; - } - /** - *
-     * Indicates whether this particular request should be dropped by the client
-     * for load balancing.
-     * 
- * - * bool drop_for_load_balancing = 5; - */ - public Builder clearDropForLoadBalancing() { - - dropForLoadBalancing_ = false; + drop_ = false; onChanged(); return this; } 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 985f517c31..33139f12e1 100644 --- a/grpclb/src/generated/main/java/io/grpc/grpclb/ServerOrBuilder.java +++ b/grpclb/src/generated/main/java/io/grpc/grpclb/ServerOrBuilder.java @@ -31,7 +31,8 @@ public interface ServerOrBuilder extends * An opaque but printable token given to the frontend for each pick. All * frontend requests for that pick must include the token in its initial * metadata. The token is used by the backend to verify the request and to - * allow the backend to report load to the gRPC LB system. + * allow the backend to report load to the gRPC LB system. The token is also + * used in client stats for reporting dropped calls. * * * string load_balance_token = 3; @@ -42,7 +43,8 @@ public interface ServerOrBuilder extends * An opaque but printable token given to the frontend for each pick. All * frontend requests for that pick must include the token in its initial * metadata. The token is used by the backend to verify the request and to - * allow the backend to report load to the gRPC LB system. + * allow the backend to report load to the gRPC LB system. The token is also + * used in client stats for reporting dropped calls. * * * string load_balance_token = 3; @@ -52,21 +54,12 @@ public interface ServerOrBuilder extends /** *
-   * Indicates whether this particular request should be dropped by the client
-   * for rate limiting.
+   * Indicates whether this particular request should be dropped by the client.
+   * If the request is dropped, there will be a corresponding entry in
+   * ClientStats.calls_finished_with_drop.
    * 
* - * bool drop_for_rate_limiting = 4; + * bool drop = 4; */ - boolean getDropForRateLimiting(); - - /** - *
-   * Indicates whether this particular request should be dropped by the client
-   * for load balancing.
-   * 
- * - * bool drop_for_load_balancing = 5; - */ - boolean getDropForLoadBalancing(); + boolean getDrop(); } diff --git a/grpclb/src/main/java/io/grpc/grpclb/GrpclbClientLoadRecorder.java b/grpclb/src/main/java/io/grpc/grpclb/GrpclbClientLoadRecorder.java index 7f6fbf4e20..039c24e19b 100644 --- a/grpclb/src/main/java/io/grpc/grpclb/GrpclbClientLoadRecorder.java +++ b/grpclb/src/main/java/io/grpc/grpclb/GrpclbClientLoadRecorder.java @@ -23,8 +23,11 @@ import io.grpc.CallOptions; import io.grpc.ClientStreamTracer; import io.grpc.Metadata; import io.grpc.Status; +import java.util.HashMap; +import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; +import javax.annotation.concurrent.GuardedBy; import javax.annotation.concurrent.ThreadSafe; /** @@ -38,8 +41,10 @@ final class GrpclbClientLoadRecorder extends ClientStreamTracer.Factory { private final AtomicLong callsFinished = new AtomicLong(); // Specific finish types - private final AtomicLong callsDroppedForRateLimiting = new AtomicLong(); - private final AtomicLong callsDroppedForLoadBalancing = new AtomicLong(); + // Access to it should be protected by lock. Contention is not an issue for these counts, because + // normally only a small portion of all RPCs are dropped. + @GuardedBy("this") + private HashMap callsDroppedPerToken = new HashMap(); private final AtomicLong callsFailedToSend = new AtomicLong(); private final AtomicLong callsFinishedKnownReceived = new AtomicLong(); @@ -56,18 +61,18 @@ final class GrpclbClientLoadRecorder extends ClientStreamTracer.Factory { /** * Records that a request has been dropped as instructed by the remote balancer. */ - void recordDroppedRequest(DropType type) { + void recordDroppedRequest(String token) { callsStarted.incrementAndGet(); callsFinished.incrementAndGet(); - switch (type) { - case RATE_LIMITING: - callsDroppedForRateLimiting.incrementAndGet(); - break; - case LOAD_BALANCING: - callsDroppedForLoadBalancing.incrementAndGet(); - break; - default: - throw new AssertionError("Unsupported DropType: " + type); + + synchronized (this) { + AtomicLong count = callsDroppedPerToken.get(token); + if (count == null) { + count = new AtomicLong(1); + callsDroppedPerToken.put(token, count); + } else { + count.incrementAndGet(); + } } } @@ -75,15 +80,26 @@ final class GrpclbClientLoadRecorder extends ClientStreamTracer.Factory { * Generate the report with the data recorded this LB stream since the last report. */ ClientStats generateLoadReport() { - return ClientStats.newBuilder() + ClientStats.Builder statsBuilder = + ClientStats.newBuilder() .setTimestamp(Timestamps.fromMillis(time.currentTimeMillis())) .setNumCallsStarted(callsStarted.getAndSet(0)) .setNumCallsFinished(callsFinished.getAndSet(0)) - .setNumCallsFinishedWithDropForRateLimiting(callsDroppedForRateLimiting.getAndSet(0)) - .setNumCallsFinishedWithDropForLoadBalancing(callsDroppedForLoadBalancing.getAndSet(0)) .setNumCallsFinishedWithClientFailedToSend(callsFailedToSend.getAndSet(0)) - .setNumCallsFinishedKnownReceived(callsFinishedKnownReceived.getAndSet(0)) - .build(); + .setNumCallsFinishedKnownReceived(callsFinishedKnownReceived.getAndSet(0)); + HashMap savedCallsDroppedPerToken; + synchronized (this) { + savedCallsDroppedPerToken = callsDroppedPerToken; + callsDroppedPerToken = new HashMap(); + } + for (Map.Entry dropCount : savedCallsDroppedPerToken.entrySet()) { + statsBuilder.addCallsFinishedWithDrop( + ClientStatsPerToken.newBuilder() + .setLoadBalanceToken(dropCount.getKey()) + .setNumCalls(dropCount.getValue().get()) + .build()); + } + return statsBuilder.build(); } private class StreamTracer extends ClientStreamTracer { diff --git a/grpclb/src/main/java/io/grpc/grpclb/GrpclbLoadBalancer.java b/grpclb/src/main/java/io/grpc/grpclb/GrpclbLoadBalancer.java index 263ddb9d48..fd0fb1b74c 100644 --- a/grpclb/src/main/java/io/grpc/grpclb/GrpclbLoadBalancer.java +++ b/grpclb/src/main/java/io/grpc/grpclb/GrpclbLoadBalancer.java @@ -49,7 +49,6 @@ import java.net.SocketAddress; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Collections; -import java.util.EnumMap; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -72,19 +71,8 @@ class GrpclbLoadBalancer extends LoadBalancer implements WithLogId { private static final Logger logger = Logger.getLogger(GrpclbLoadBalancer.class.getName()); @VisibleForTesting - static final Map DROP_PICK_RESULTS; - - static { - EnumMap map = new EnumMap(DropType.class); - for (DropType dropType : DropType.values()) { - map.put( - dropType, - PickResult.withError( - Status.UNAVAILABLE.withDescription( - "Dropped as requested by balancer. Type: " + dropType))); - } - DROP_PICK_RESULTS = Collections.unmodifiableMap(map); - } + static final PickResult DROP_PICK_RESULT = + PickResult.withError(Status.UNAVAILABLE.withDescription("Dropped as requested by balancer")); @VisibleForTesting static final SubchannelPicker BUFFER_PICKER = new SubchannelPicker() { @@ -457,10 +445,9 @@ class GrpclbLoadBalancer extends LoadBalancer implements WithLogId { // TODO(zhangkun83): honor expiration_interval // Construct the new collections. Create new Subchannels when necessary. for (Server server : serverList.getServersList()) { - if (server.getDropForRateLimiting()) { - newRoundRobinList.add(new RoundRobinEntry(DropType.RATE_LIMITING, loadRecorder)); - } else if (server.getDropForLoadBalancing()) { - newRoundRobinList.add(new RoundRobinEntry(DropType.LOAD_BALANCING, loadRecorder)); + String token = server.getLoadBalanceToken(); + if (server.getDrop()) { + newRoundRobinList.add(RoundRobinEntry.newDropEntry(loadRecorder, token)); } else { InetSocketAddress address; try { @@ -471,7 +458,6 @@ class GrpclbLoadBalancer extends LoadBalancer implements WithLogId { continue; } EquivalentAddressGroup eag = new EquivalentAddressGroup(address); - String token = server.getLoadBalanceToken(); Subchannel subchannel = newSubchannelMap.get(eag); if (subchannel == null) { subchannel = subchannels.get(eag); @@ -486,7 +472,7 @@ class GrpclbLoadBalancer extends LoadBalancer implements WithLogId { } newSubchannelMap.put(eag, subchannel); } - newRoundRobinList.add(new RoundRobinEntry(subchannel, loadRecorder, token)); + newRoundRobinList.add(RoundRobinEntry.newEntry(subchannel, loadRecorder, token)); } } // Close Subchannels whose addresses have been delisted @@ -665,35 +651,33 @@ class GrpclbLoadBalancer extends LoadBalancer implements WithLogId { static final class RoundRobinEntry { final PickResult result; final GrpclbClientLoadRecorder loadRecorder; - @Nullable - private final String token; - @Nullable - private final DropType dropType; + final String token; - /** - * A non-drop result. - */ - RoundRobinEntry(Subchannel subchannel, GrpclbClientLoadRecorder loadRecorder, String token) { + private RoundRobinEntry( + PickResult result, GrpclbClientLoadRecorder loadRecorder, String token) { + this.result = checkNotNull(result); this.loadRecorder = checkNotNull(loadRecorder, "loadRecorder"); - this.result = PickResult.withSubchannel(subchannel, loadRecorder); - this.token = token; - this.dropType = null; + this.token = checkNotNull(token, "token"); } /** - * A drop result. + * Create a non-drop result. */ - RoundRobinEntry(DropType dropType, GrpclbClientLoadRecorder loadRecorder) { - this.loadRecorder = checkNotNull(loadRecorder, "loadRecorder"); - // We re-use the status for each DropType to make it easy to test, because Status class - // intentionally doesn't implement equals(). - this.result = DROP_PICK_RESULTS.get(dropType); - this.token = null; - this.dropType = dropType; + static RoundRobinEntry newEntry( + Subchannel subchannel, GrpclbClientLoadRecorder loadRecorder, String token) { + return new RoundRobinEntry( + PickResult.withSubchannel(subchannel, loadRecorder), loadRecorder, token); + } + + /** + * Create a drop result. + */ + static RoundRobinEntry newDropEntry(GrpclbClientLoadRecorder loadRecorder, String token) { + return new RoundRobinEntry(DROP_PICK_RESULT, loadRecorder, token); } void updateHeaders(Metadata headers) { - if (token != null) { + if (!isDrop()) { headers.discardAll(GrpclbConstants.TOKEN_METADATA_KEY); headers.put(GrpclbConstants.TOKEN_METADATA_KEY, token); } @@ -704,13 +688,12 @@ class GrpclbLoadBalancer extends LoadBalancer implements WithLogId { return MoreObjects.toStringHelper(this) .add("result", result) .add("token", token) - .add("dropType", dropType) .toString(); } @Override public int hashCode() { - return Objects.hashCode(result, token, dropType); + return Objects.hashCode(result, token); } @Override @@ -719,8 +702,11 @@ class GrpclbLoadBalancer extends LoadBalancer implements WithLogId { return false; } RoundRobinEntry that = (RoundRobinEntry) other; - return Objects.equal(result, that.result) && Objects.equal(token, that.token) - && Objects.equal(dropType, that.dropType); + return Objects.equal(result, that.result) && Objects.equal(token, that.token); + } + + boolean isDrop() { + return result == DROP_PICK_RESULT; } } @@ -743,8 +729,8 @@ class GrpclbLoadBalancer extends LoadBalancer implements WithLogId { index = 0; } result.updateHeaders(args.getHeaders()); - if (result.dropType != null) { - result.loadRecorder.recordDroppedRequest(result.dropType); + if (result.isDrop()) { + result.loadRecorder.recordDroppedRequest(result.token); } return result.result; } diff --git a/grpclb/src/main/proto/load_balancer.proto b/grpclb/src/main/proto/load_balancer.proto index f88d983e5b..c7bf80866b 100644 --- a/grpclb/src/main/proto/load_balancer.proto +++ b/grpclb/src/main/proto/load_balancer.proto @@ -34,6 +34,15 @@ message InitialLoadBalanceRequest { string name = 1; } +// Contains the number of calls finished for a particular load balance token. +message ClientStatsPerToken { + // See Server.load_balance_token. + string load_balance_token = 1; + + // The total number of RPCs that finished associated with the token. + int64 num_calls = 2; +} + // Contains client level statistics that are useful to load balancing. Each // count except the timestamp should be reset to zero after reporting the stats. message ClientStats { @@ -46,20 +55,17 @@ message ClientStats { // The total number of RPCs that finished. int64 num_calls_finished = 3; - // The total number of RPCs that were dropped by the client because of rate - // limiting. - int64 num_calls_finished_with_drop_for_rate_limiting = 4; - - // The total number of RPCs that were dropped by the client because of load - // balancing. - int64 num_calls_finished_with_drop_for_load_balancing = 5; - // The total number of RPCs that failed to reach a server except dropped RPCs. int64 num_calls_finished_with_client_failed_to_send = 6; // The total number of RPCs that finished and are known to have been received // by a server. int64 num_calls_finished_known_received = 7; + + // The list of dropped calls. + repeated ClientStatsPerToken calls_finished_with_drop = 8; + + reserved 4, 5; } message LoadBalanceResponse { @@ -101,10 +107,8 @@ message ServerList { google.protobuf.Duration expiration_interval = 3; } -// Contains server information. When none of the [drop_for_*] fields are true, -// use the other fields. When drop_for_rate_limiting is true, ignore all other -// fields. Use drop_for_load_balancing only when it is true and -// drop_for_rate_limiting is false. +// Contains server information. When the drop field is not true, use the other +// fields. message Server { // A resolved address for the server, serialized in network-byte-order. It may // either be an IPv4 or IPv6 address. @@ -116,14 +120,14 @@ message Server { // An opaque but printable token given to the frontend for each pick. All // frontend requests for that pick must include the token in its initial // metadata. The token is used by the backend to verify the request and to - // allow the backend to report load to the gRPC LB system. + // allow the backend to report load to the gRPC LB system. The token is also + // used in client stats for reporting dropped calls. string load_balance_token = 3; - // Indicates whether this particular request should be dropped by the client - // for rate limiting. - bool drop_for_rate_limiting = 4; + // Indicates whether this particular request should be dropped by the client. + // If the request is dropped, there will be a corresponding entry in + // ClientStats.calls_finished_with_drop. + bool drop = 4; - // Indicates whether this particular request should be dropped by the client - // for load balancing. - bool drop_for_load_balancing = 5; + reserved 5; } diff --git a/grpclb/src/test/java/io/grpc/grpclb/GrpclbLoadBalancerTest.java b/grpclb/src/test/java/io/grpc/grpclb/GrpclbLoadBalancerTest.java index b716cdc944..a4d17c06d2 100644 --- a/grpclb/src/test/java/io/grpc/grpclb/GrpclbLoadBalancerTest.java +++ b/grpclb/src/test/java/io/grpc/grpclb/GrpclbLoadBalancerTest.java @@ -27,7 +27,6 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; import static org.mockito.Matchers.same; @@ -250,9 +249,9 @@ public class GrpclbLoadBalancerTest { public void roundRobinPicker() { GrpclbClientLoadRecorder loadRecorder = new GrpclbClientLoadRecorder(timeProvider); Subchannel subchannel = mock(Subchannel.class); - RoundRobinEntry r1 = new RoundRobinEntry(DropType.RATE_LIMITING, loadRecorder); - RoundRobinEntry r2 = new RoundRobinEntry(subchannel, loadRecorder, "LBTOKEN0001"); - RoundRobinEntry r3 = new RoundRobinEntry(subchannel, loadRecorder, "LBTOKEN0002"); + RoundRobinEntry r1 = RoundRobinEntry.newDropEntry(loadRecorder, "LBTOKEN0001"); + RoundRobinEntry r2 = RoundRobinEntry.newEntry(subchannel, loadRecorder, "LBTOKEN0001"); + RoundRobinEntry r3 = RoundRobinEntry.newEntry(subchannel, loadRecorder, "LBTOKEN0002"); List list = Arrays.asList(r1, r2, r3); RoundRobinPicker picker = new RoundRobinPicker(list); @@ -332,9 +331,9 @@ public class GrpclbLoadBalancerTest { List backends = Arrays.asList( new ServerEntry("127.0.0.1", 2000, "token0001"), - new ServerEntry(DropType.RATE_LIMITING), + new ServerEntry("token0001"), new ServerEntry("127.0.0.1", 2010, "token0002"), - new ServerEntry(DropType.LOAD_BALANCING)); + new ServerEntry("token0003")); lbResponseObserver.onNext(buildLbResponse(backends)); @@ -350,10 +349,10 @@ public class GrpclbLoadBalancerTest { .updateBalancingState(eq(READY), pickerCaptor.capture()); RoundRobinPicker picker = (RoundRobinPicker) pickerCaptor.getValue(); assertThat(picker.list).containsExactly( - new RoundRobinEntry(subchannel1, balancer.getLoadRecorder(), "token0001"), - new RoundRobinEntry(DropType.RATE_LIMITING, balancer.getLoadRecorder()), - new RoundRobinEntry(subchannel2, balancer.getLoadRecorder(), "token0002"), - new RoundRobinEntry(DropType.LOAD_BALANCING, balancer.getLoadRecorder())).inOrder(); + RoundRobinEntry.newEntry(subchannel1, balancer.getLoadRecorder(), "token0001"), + RoundRobinEntry.newDropEntry(balancer.getLoadRecorder(), "token0001"), + RoundRobinEntry.newEntry(subchannel2, balancer.getLoadRecorder(), "token0002"), + RoundRobinEntry.newDropEntry(balancer.getLoadRecorder(), "token0003")).inOrder(); // Report, no data assertNextReport( @@ -374,7 +373,7 @@ public class GrpclbLoadBalancerTest { PickResult pick2 = picker.pickSubchannel(args); assertNull(pick2.getSubchannel()); - assertSame(GrpclbLoadBalancer.DROP_PICK_RESULTS.get(DropType.RATE_LIMITING), pick2); + assertSame(GrpclbLoadBalancer.DROP_PICK_RESULT, pick2); // Report includes upstart of pick1 and the drop of pick2 assertNextReport( @@ -382,7 +381,11 @@ public class GrpclbLoadBalancerTest { ClientStats.newBuilder() .setNumCallsStarted(2) .setNumCallsFinished(1) // pick2 - .setNumCallsFinishedWithDropForRateLimiting(1) // pick2 + .addCallsFinishedWithDrop( + ClientStatsPerToken.newBuilder() + .setLoadBalanceToken("token0001") + .setNumCalls(1) // pick2 + .build()) .build()); PickResult pick3 = picker.pickSubchannel(args); @@ -403,7 +406,7 @@ public class GrpclbLoadBalancerTest { PickResult pick4 = picker.pickSubchannel(args); assertNull(pick4.getSubchannel()); - assertSame(GrpclbLoadBalancer.DROP_PICK_RESULTS.get(DropType.LOAD_BALANCING), pick4); + assertSame(GrpclbLoadBalancer.DROP_PICK_RESULT, pick4); // pick1 ended without sending anything tracer1.streamClosed(Status.CANCELLED); @@ -415,8 +418,12 @@ public class GrpclbLoadBalancerTest { .setNumCallsStarted(1) // pick4 .setNumCallsFinished(2) .setNumCallsFinishedWithClientFailedToSend(1) // pick1 - .setNumCallsFinishedWithDropForLoadBalancing(1) // pick4 - .build()); + .addCallsFinishedWithDrop( + ClientStatsPerToken.newBuilder() + .setLoadBalanceToken("token0003") + .setNumCalls(1) // pick4 + .build()) + .build()); PickResult pick5 = picker.pickSubchannel(args); assertSame(subchannel1, pick1.getSubchannel()); @@ -478,7 +485,7 @@ public class GrpclbLoadBalancerTest { // that picker is associated with the previous stream. PickResult pick6 = picker.pickSubchannel(args); assertNull(pick6.getSubchannel()); - assertSame(GrpclbLoadBalancer.DROP_PICK_RESULTS.get(DropType.RATE_LIMITING), pick6); + assertSame(GrpclbLoadBalancer.DROP_PICK_RESULT, pick6); assertNextReport( inOrder, lbRequestObserver, loadReportIntervalMillis, ClientStats.newBuilder().build()); @@ -930,14 +937,14 @@ public class GrpclbLoadBalancerTest { RoundRobinPicker picker1 = (RoundRobinPicker) pickerCaptor.getValue(); assertThat(picker1.list).containsExactly( - new RoundRobinEntry(subchannel2, balancer.getLoadRecorder(), "token0002")); + RoundRobinEntry.newEntry(subchannel2, balancer.getLoadRecorder(), "token0002")); deliverSubchannelState(subchannel1, ConnectivityStateInfo.forNonError(READY)); inOrder.verify(helper).updateBalancingState(eq(READY), pickerCaptor.capture()); RoundRobinPicker picker2 = (RoundRobinPicker) pickerCaptor.getValue(); assertThat(picker2.list).containsExactly( - new RoundRobinEntry(subchannel1, balancer.getLoadRecorder(), "token0001"), - new RoundRobinEntry(subchannel2, balancer.getLoadRecorder(), "token0002")) + RoundRobinEntry.newEntry(subchannel1, balancer.getLoadRecorder(), "token0001"), + RoundRobinEntry.newEntry(subchannel2, balancer.getLoadRecorder(), "token0002")) .inOrder(); // Disconnected subchannels @@ -947,7 +954,7 @@ public class GrpclbLoadBalancerTest { inOrder.verify(helper).updateBalancingState(eq(READY), pickerCaptor.capture()); RoundRobinPicker picker3 = (RoundRobinPicker) pickerCaptor.getValue(); assertThat(picker3.list).containsExactly( - new RoundRobinEntry(subchannel2, balancer.getLoadRecorder(), "token0002")); + RoundRobinEntry.newEntry(subchannel2, balancer.getLoadRecorder(), "token0002")); deliverSubchannelState(subchannel1, ConnectivityStateInfo.forNonError(CONNECTING)); inOrder.verifyNoMoreInteractions(); @@ -967,10 +974,10 @@ public class GrpclbLoadBalancerTest { List backends2 = Arrays.asList( new ServerEntry("127.0.0.1", 2030, "token0003"), // New address - new ServerEntry(DropType.RATE_LIMITING), + new ServerEntry("token0003"), new ServerEntry("127.0.0.1", 2010, "token0004"), // Existing address with token changed new ServerEntry("127.0.0.1", 2030, "token0005"), // New address appearing second time - new ServerEntry(DropType.LOAD_BALANCING)); + new ServerEntry("token0006")); verify(subchannel1, never()).shutdown(); lbResponseObserver.onNext(buildLbResponse(backends2)); @@ -988,8 +995,8 @@ public class GrpclbLoadBalancerTest { inOrder.verify(helper).updateBalancingState(eq(READY), pickerCaptor.capture()); RoundRobinPicker picker7 = (RoundRobinPicker) pickerCaptor.getValue(); assertThat(picker7.list).containsExactly( - new RoundRobinEntry(DropType.RATE_LIMITING, balancer.getLoadRecorder()), - new RoundRobinEntry(DropType.LOAD_BALANCING, balancer.getLoadRecorder())).inOrder(); + RoundRobinEntry.newDropEntry(balancer.getLoadRecorder(), "token0003"), + RoundRobinEntry.newDropEntry(balancer.getLoadRecorder(), "token0006")).inOrder(); // State updates on obsolete subchannel1 will have no effect deliverSubchannelState(subchannel1, ConnectivityStateInfo.forNonError(READY)); @@ -1003,20 +1010,20 @@ public class GrpclbLoadBalancerTest { RoundRobinPicker picker8 = (RoundRobinPicker) pickerCaptor.getValue(); // subchannel2 is still IDLE, thus not in the active list assertThat(picker8.list).containsExactly( - new RoundRobinEntry(subchannel3, balancer.getLoadRecorder(), "token0003"), - new RoundRobinEntry(DropType.RATE_LIMITING, balancer.getLoadRecorder()), - new RoundRobinEntry(subchannel3, balancer.getLoadRecorder(), "token0005"), - new RoundRobinEntry(DropType.LOAD_BALANCING, balancer.getLoadRecorder())).inOrder(); + RoundRobinEntry.newEntry(subchannel3, balancer.getLoadRecorder(), "token0003"), + RoundRobinEntry.newDropEntry(balancer.getLoadRecorder(), "token0003"), + RoundRobinEntry.newEntry(subchannel3, balancer.getLoadRecorder(), "token0005"), + RoundRobinEntry.newDropEntry(balancer.getLoadRecorder(), "token0006")).inOrder(); // subchannel2 becomes READY and makes it into the list deliverSubchannelState(subchannel2, ConnectivityStateInfo.forNonError(READY)); inOrder.verify(helper).updateBalancingState(eq(READY), pickerCaptor.capture()); RoundRobinPicker picker9 = (RoundRobinPicker) pickerCaptor.getValue(); assertThat(picker9.list).containsExactly( - new RoundRobinEntry(subchannel3, balancer.getLoadRecorder(), "token0003"), - new RoundRobinEntry(DropType.RATE_LIMITING, balancer.getLoadRecorder()), - new RoundRobinEntry(subchannel2, balancer.getLoadRecorder(), "token0004"), - new RoundRobinEntry(subchannel3, balancer.getLoadRecorder(), "token0005"), - new RoundRobinEntry(DropType.LOAD_BALANCING, balancer.getLoadRecorder())).inOrder(); + RoundRobinEntry.newEntry(subchannel3, balancer.getLoadRecorder(), "token0003"), + RoundRobinEntry.newDropEntry(balancer.getLoadRecorder(), "token0003"), + RoundRobinEntry.newEntry(subchannel2, balancer.getLoadRecorder(), "token0004"), + RoundRobinEntry.newEntry(subchannel3, balancer.getLoadRecorder(), "token0005"), + RoundRobinEntry.newDropEntry(balancer.getLoadRecorder(), "token0006")).inOrder(); verify(subchannel3, never()).shutdown(); // Update backends, with no entry @@ -1134,23 +1141,17 @@ public class GrpclbLoadBalancerTest { private static LoadBalanceResponse buildLbResponse(List servers) { ServerList.Builder serverListBuilder = ServerList.newBuilder(); for (ServerEntry server : servers) { - if (server.dropType == null) { + if (server.addr != null) { serverListBuilder.addServers(Server.newBuilder() .setIpAddress(ByteString.copyFrom(server.addr.getAddress().getAddress())) .setPort(server.addr.getPort()) .setLoadBalanceToken(server.token) .build()); } else { - switch (server.dropType) { - case RATE_LIMITING: - serverListBuilder.addServers(Server.newBuilder().setDropForRateLimiting(true).build()); - break; - case LOAD_BALANCING: - serverListBuilder.addServers(Server.newBuilder().setDropForLoadBalancing(true).build()); - break; - default: - fail("Unhandled " + server.dropType); - } + serverListBuilder.addServers(Server.newBuilder() + .setDrop(true) + .setLoadBalanceToken(server.token) + .build()); } } return LoadBalanceResponse.newBuilder() @@ -1161,18 +1162,16 @@ public class GrpclbLoadBalancerTest { private static class ServerEntry { final InetSocketAddress addr; final String token; - final DropType dropType; ServerEntry(String host, int port, String token) { this.addr = new InetSocketAddress(host, port); this.token = token; - this.dropType = null; } - ServerEntry(DropType dropType) { - this.dropType = dropType; + // Drop entry + ServerEntry(String token) { this.addr = null; - this.token = null; + this.token = token; } }