Skip to content
This repository was archived by the owner on Sep 26, 2023. It is now read-only.

Commit 69458b4

Browse files
authored
fix: fix dynamic flow control setting checks (#1347)
* fix: fix dynamic flow control setting checks * make checks more readable
1 parent 06dbf12 commit 69458b4

File tree

2 files changed

+32
-10
lines changed

2 files changed

+32
-10
lines changed

‎gax/src/main/java/com/google/api/gax/batching/DynamicFlowControlSettings.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,14 @@ public DynamicFlowControlSettings build() {
115115
}
116116

117117
private void verifyElementCountSettings(DynamicFlowControlSettings settings) {
118-
boolean isEnabled =
119-
settings.getInitialOutstandingElementCount() != null
120-
|| settings.getMinOutstandingElementCount() != null
121-
|| settings.getMaxOutstandingElementCount() != null;
122-
if (!isEnabled) {
118+
// If LimitExceededBehavior is Ignore, dynamic flow control is disabled, there's no need to
119+
// check element count limit settings
120+
if (settings.getLimitExceededBehavior() == LimitExceededBehavior.Ignore) {
121+
return;
122+
}
123+
if (settings.getInitialOutstandingElementCount() == null
124+
&& settings.getMinOutstandingElementCount() == null
125+
&& settings.getMaxOutstandingElementCount() == null) {
123126
return;
124127
}
125128
Preconditions.checkState(
@@ -141,11 +144,14 @@ private void verifyElementCountSettings(DynamicFlowControlSettings settings) {
141144
}
142145

143146
private void verifyRequestBytesSettings(DynamicFlowControlSettings settings) {
144-
boolean isEnabled =
145-
settings.getInitialOutstandingRequestBytes() != null
146-
|| settings.getMinOutstandingRequestBytes() != null
147-
|| settings.getMaxOutstandingRequestBytes() != null;
148-
if (!isEnabled) {
147+
// If LimitExceededBehavior is Ignore, dynamic flow control is disabled, there's no need to
148+
// check request bytes limit settings
149+
if (settings.getLimitExceededBehavior() == LimitExceededBehavior.Ignore) {
150+
return;
151+
}
152+
if (settings.getInitialOutstandingRequestBytes() == null
153+
&& settings.getMinOutstandingRequestBytes() == null
154+
&& settings.getMaxOutstandingRequestBytes() == null) {
149155
return;
150156
}
151157
Preconditions.checkState(

‎gax/src/test/java/com/google/api/gax/batching/DynamicFlowControlSettingsTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,22 @@ public void testEmptyBuilder() {
5555
assertEquals(LimitExceededBehavior.Block, settings.getLimitExceededBehavior());
5656
}
5757

58+
@Test
59+
public void testPartialSettingsIgnored() {
60+
// If behavior is ignore, build shouldn't throw exceptions even when only one of the bytes or
61+
// element limits is set
62+
DynamicFlowControlSettings.Builder builder =
63+
DynamicFlowControlSettings.newBuilder()
64+
.setLimitExceededBehavior(LimitExceededBehavior.Ignore)
65+
.setMaxOutstandingElementCount(1L);
66+
builder.build();
67+
builder =
68+
DynamicFlowControlSettings.newBuilder()
69+
.setLimitExceededBehavior(LimitExceededBehavior.Ignore)
70+
.setMinOutstandingRequestBytes(1L);
71+
builder.build();
72+
}
73+
5874
@Test
5975
public void testBuilder() {
6076
DynamicFlowControlSettings.Builder builder =

0 commit comments

Comments
 (0)