Skip to content

Commit 1847a85

Browse files
igorbernstein2garrettjonesgoogle
authored andcommitted
Upgrade to gax 1.20.0 (and fix bigtable to use the updated apis) (#3037)
1 parent 7bd2901 commit 1847a85

File tree

6 files changed

+62
-41
lines changed

6 files changed

+62
-41
lines changed

google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,16 @@ public static EnhancedBigtableStub create(EnhancedBigtableStubSettings settings)
8484
BigtableStubSettings.newBuilder()
8585
.setTransportChannelProvider(settings.getTransportChannelProvider())
8686
.setEndpoint(settings.getEndpoint())
87-
.setCredentialsProvider(settings.getCredentialsProvider());
87+
.setCredentialsProvider(settings.getCredentialsProvider())
88+
.setStreamWatchdogProvider(settings.getStreamWatchdogProvider())
89+
.setStreamWatchdogCheckInterval(settings.getStreamWatchdogCheckInterval());
8890

8991
// ReadRow retries are handled in the overlay: disable retries in the base layer (but make
9092
// sure to preserve the exception callable settings).
9193
baseSettingsBuilder
9294
.readRowsSettings()
9395
.setSimpleTimeoutNoRetries(Duration.ofHours(2))
9496
.setRetryableCodes(settings.readRowsSettings().getRetryableCodes())
95-
.setTimeoutCheckInterval(Duration.ZERO)
9697
.setIdleTimeout(Duration.ZERO);
9798

9899
// SampleRowKeys retries are handled in the overlay: disable retries in the base layer (but make
@@ -115,7 +116,6 @@ public static EnhancedBigtableStub create(EnhancedBigtableStubSettings settings)
115116
.mutateRowsSettings()
116117
.setSimpleTimeoutNoRetries(Duration.ofHours(2))
117118
.setRetryableCodes(settings.mutateRowsSettings().getRetryableCodes())
118-
.setTimeoutCheckInterval(Duration.ZERO)
119119
.setIdleTimeout(Duration.ZERO);
120120

121121
// CheckAndMutateRow is a simple passthrough
@@ -182,7 +182,6 @@ public <RowT> ServerStreamingCallable<Query, RowT> createReadRowsCallable(
182182
.setResumptionStrategy(new ReadRowsResumptionStrategy<>(rowAdapter))
183183
.setRetryableCodes(settings.readRowsSettings().getRetryableCodes())
184184
.setRetrySettings(settings.readRowsSettings().getRetrySettings())
185-
.setTimeoutCheckInterval(settings.readRowsSettings().getTimeoutCheckInterval())
186185
.setIdleTimeout(settings.readRowsSettings().getIdleTimeout())
187186
.build();
188187

google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -80,16 +80,16 @@ public class EnhancedBigtableStubSettings extends StubSettings<EnhancedBigtableS
8080
private static final Set<Code> DEFAULT_RETRY_CODES =
8181
ImmutableSet.of(Code.DEADLINE_EXCEEDED, Code.UNAVAILABLE, Code.ABORTED);
8282

83+
// Copy of default retrying settings in the yaml
8384
private static final RetrySettings DEFAULT_RETRY_SETTINGS =
8485
RetrySettings.newBuilder()
85-
.setMaxAttempts(10)
86-
.setTotalTimeout(Duration.ofHours(1))
87-
.setInitialRetryDelay(Duration.ofMillis(100))
86+
.setInitialRetryDelay(Duration.ofMillis(100L))
8887
.setRetryDelayMultiplier(1.3)
89-
.setMaxRetryDelay(Duration.ofMinutes(1))
90-
.setInitialRpcTimeout(Duration.ofSeconds(20))
91-
.setRpcTimeoutMultiplier(1)
92-
.setMaxRpcTimeout(Duration.ofSeconds(20))
88+
.setMaxRetryDelay(Duration.ofMillis(60000L))
89+
.setInitialRpcTimeout(Duration.ofMillis(20000L))
90+
.setRpcTimeoutMultiplier(1.0)
91+
.setMaxRpcTimeout(Duration.ofMillis(20000L))
92+
.setTotalTimeout(Duration.ofMillis(600000L))
9393
.build();
9494

9595
private final InstanceName instanceName;
@@ -201,14 +201,16 @@ private Builder() {
201201
.setChannelsPerCpu(2)
202202
.setMaxInboundMessageSize(MAX_MESSAGE_SIZE)
203203
.build());
204+
setStreamWatchdogCheckInterval(baseDefaults.getStreamWatchdogCheckInterval());
205+
setStreamWatchdogProvider(baseDefaults.getStreamWatchdogProvider());
204206

205207
// Per-method settings using baseSettings for defaults.
206208
readRowsSettings = ServerStreamingCallSettings.newBuilder();
207209
/* TODO: copy timeouts, retryCodes & retrySettings from baseSettings.readRows once it exists in GAPIC */
208210
readRowsSettings
209211
.setRetryableCodes(DEFAULT_RETRY_CODES)
210-
.setRetrySettings(DEFAULT_RETRY_SETTINGS)
211-
.setTimeoutCheckInterval(Duration.ofSeconds(10))
212+
.setRetrySettings(
213+
DEFAULT_RETRY_SETTINGS.toBuilder().setTotalTimeout(Duration.ofHours(1)).build())
212214
.setIdleTimeout(Duration.ofMinutes(5));
213215

214216
sampleRowKeysSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
@@ -217,14 +219,8 @@ private Builder() {
217219
.setRetryableCodes(Code.DEADLINE_EXCEEDED, Code.UNAVAILABLE, Code.ABORTED)
218220
.setRetrySettings(DEFAULT_RETRY_SETTINGS);
219221

220-
// NOTE: This client enforces client side timestamps, which makes all mutations retryable.
221-
// However, since the base GAPIC client allows for server side timestamps, it is not
222-
// configured to enable retries. So the retry settings have to be defined here instead of
223-
// being copied from the BigtableStubSettings.
224222
mutateRowSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
225-
mutateRowSettings
226-
.setRetryableCodes(DEFAULT_RETRY_CODES)
227-
.setRetrySettings(DEFAULT_RETRY_SETTINGS);
223+
copyRetrySettings(baseDefaults.mutateRowSettings(), mutateRowSettings);
228224

229225
/* TODO: copy retryCodes & retrySettings from baseSettings.mutateRows once it exists in GAPIC */
230226
mutateRowsSettings =

google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsResumptionStrategy.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public StreamResumptionStrategy<ReadRowsRequest, RowT> createNew() {
5757
}
5858

5959
@Override
60-
public void onProgress(RowT response) {
60+
public RowT processResponse(RowT response) {
6161
// Last key can come from both the last processed row key and a synthetic row marker. The
6262
// synthetic row marker is emitted when the server has read a lot of data that was filtered out.
6363
// The row marker can be used to trim the start of the scan, but does not contribute to the row
@@ -67,6 +67,7 @@ public void onProgress(RowT response) {
6767
// Only real rows count towards the rows limit.
6868
numProcessed++;
6969
}
70+
return response;
7071
}
7172

7273
/**

google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettingsTest.java

Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.google.api.gax.rpc.ServerStreamingCallSettings;
2626
import com.google.api.gax.rpc.StatusCode.Code;
2727
import com.google.api.gax.rpc.UnaryCallSettings;
28+
import com.google.api.gax.rpc.WatchdogProvider;
2829
import com.google.bigtable.admin.v2.InstanceName;
2930
import com.google.cloud.bigtable.data.v2.models.ConditionalRowMutation;
3031
import com.google.cloud.bigtable.data.v2.models.KeyOffset;
@@ -62,42 +63,74 @@ public void settingsAreNotLostTest() {
6263
String appProfileId = "my-app-profile-id";
6364
String endpoint = "some.other.host:123";
6465
CredentialsProvider credentialsProvider = Mockito.mock(CredentialsProvider.class);
66+
WatchdogProvider watchdogProvider = Mockito.mock(WatchdogProvider.class);
67+
Duration watchdogInterval = Duration.ofSeconds(12);
6568

6669
EnhancedBigtableStubSettings.Builder builder =
6770
EnhancedBigtableStubSettings.newBuilder()
6871
.setInstanceName(instanceName)
6972
.setAppProfileId(appProfileId)
7073
.setEndpoint(endpoint)
71-
.setCredentialsProvider(credentialsProvider);
74+
.setCredentialsProvider(credentialsProvider)
75+
.setStreamWatchdogProvider(watchdogProvider)
76+
.setStreamWatchdogCheckInterval(watchdogInterval);
7277

73-
verifyBuilder(builder, instanceName, appProfileId, endpoint, credentialsProvider);
74-
verifySettings(builder.build(), instanceName, appProfileId, endpoint, credentialsProvider);
7578
verifyBuilder(
76-
builder.build().toBuilder(), instanceName, appProfileId, endpoint, credentialsProvider);
79+
builder,
80+
instanceName,
81+
appProfileId,
82+
endpoint,
83+
credentialsProvider,
84+
watchdogProvider,
85+
watchdogInterval);
86+
verifySettings(
87+
builder.build(),
88+
instanceName,
89+
appProfileId,
90+
endpoint,
91+
credentialsProvider,
92+
watchdogProvider,
93+
watchdogInterval);
94+
verifyBuilder(
95+
builder.build().toBuilder(),
96+
instanceName,
97+
appProfileId,
98+
endpoint,
99+
credentialsProvider,
100+
watchdogProvider,
101+
watchdogInterval);
77102
}
78103

79104
private void verifyBuilder(
80105
EnhancedBigtableStubSettings.Builder builder,
81106
InstanceName instanceName,
82107
String appProfileId,
83108
String endpoint,
84-
CredentialsProvider credentialsProvider) {
109+
CredentialsProvider credentialsProvider,
110+
WatchdogProvider watchdogProvider,
111+
Duration watchdogInterval) {
85112
assertThat(builder.getInstanceName()).isEqualTo(instanceName);
86113
assertThat(builder.getAppProfileId()).isEqualTo(appProfileId);
87114
assertThat(builder.getEndpoint()).isEqualTo(endpoint);
88115
assertThat(builder.getCredentialsProvider()).isEqualTo(credentialsProvider);
116+
assertThat(builder.getStreamWatchdogProvider()).isSameAs(watchdogProvider);
117+
assertThat(builder.getStreamWatchdogCheckInterval()).isEqualTo(watchdogInterval);
89118
}
90119

91120
private void verifySettings(
92121
EnhancedBigtableStubSettings settings,
93122
InstanceName instanceName,
94123
String appProfileId,
95124
String endpoint,
96-
CredentialsProvider credentialsProvider) {
125+
CredentialsProvider credentialsProvider,
126+
WatchdogProvider watchdogProvider,
127+
Duration watchdogInterval) {
97128
assertThat(settings.getInstanceName()).isEqualTo(instanceName);
98129
assertThat(settings.getAppProfileId()).isEqualTo(appProfileId);
99130
assertThat(settings.getEndpoint()).isEqualTo(endpoint);
100131
assertThat(settings.getCredentialsProvider()).isEqualTo(credentialsProvider);
132+
assertThat(settings.getStreamWatchdogProvider()).isSameAs(watchdogProvider);
133+
assertThat(settings.getStreamWatchdogCheckInterval()).isEqualTo(watchdogInterval);
101134
}
102135

103136
@Test
@@ -132,29 +165,22 @@ public void readRowsIsNotLostTest() {
132165

133166
builder
134167
.readRowsSettings()
135-
.setTimeoutCheckInterval(Duration.ofSeconds(10))
136168
.setIdleTimeout(Duration.ofMinutes(5))
137169
.setRetryableCodes(Code.ABORTED, Code.DEADLINE_EXCEEDED)
138170
.setRetrySettings(retrySettings)
139171
.build();
140172

141-
assertThat(builder.readRowsSettings().getTimeoutCheckInterval())
142-
.isEqualTo(Duration.ofSeconds(10));
143173
assertThat(builder.readRowsSettings().getIdleTimeout()).isEqualTo(Duration.ofMinutes(5));
144174
assertThat(builder.readRowsSettings().getRetryableCodes())
145175
.containsAllOf(Code.ABORTED, Code.DEADLINE_EXCEEDED);
146176
assertThat(builder.readRowsSettings().getRetrySettings()).isEqualTo(retrySettings);
147177

148-
assertThat(builder.build().readRowsSettings().getTimeoutCheckInterval())
149-
.isEqualTo(Duration.ofSeconds(10));
150178
assertThat(builder.build().readRowsSettings().getIdleTimeout())
151179
.isEqualTo(Duration.ofMinutes(5));
152180
assertThat(builder.build().readRowsSettings().getRetryableCodes())
153181
.containsAllOf(Code.ABORTED, Code.DEADLINE_EXCEEDED);
154182
assertThat(builder.build().readRowsSettings().getRetrySettings()).isEqualTo(retrySettings);
155183

156-
assertThat(builder.build().toBuilder().readRowsSettings().getTimeoutCheckInterval())
157-
.isEqualTo(Duration.ofSeconds(10));
158184
assertThat(builder.build().toBuilder().readRowsSettings().getIdleTimeout())
159185
.isEqualTo(Duration.ofMinutes(5));
160186
assertThat(builder.build().toBuilder().readRowsSettings().getRetryableCodes())
@@ -367,9 +393,8 @@ public void checkAndMutateRowSettingsAreSane() {
367393
}
368394

369395
private void verifyRetrySettingAreSane(Set<Code> retryCodes, RetrySettings retrySettings) {
370-
assertThat(retryCodes).containsAllOf(Code.DEADLINE_EXCEEDED, Code.UNAVAILABLE, Code.ABORTED);
396+
assertThat(retryCodes).containsAllOf(Code.DEADLINE_EXCEEDED, Code.UNAVAILABLE);
371397

372-
assertThat(retrySettings.getMaxAttempts()).isGreaterThan(1);
373398
assertThat(retrySettings.getTotalTimeout()).isGreaterThan(Duration.ZERO);
374399

375400
assertThat(retrySettings.getInitialRetryDelay()).isGreaterThan(Duration.ZERO);

google-cloud-bom/pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,10 +168,10 @@
168168
<managedtest.version>0.39.1-alpha-SNAPSHOT</managedtest.version><!-- {x-version-update:google-cloud-managedtest:current} -->
169169
<testing.version>0.39.1-alpha-SNAPSHOT</testing.version><!-- {x-version-update:google-cloud-testing:current} -->
170170

171-
<api-common.version>1.4.0</api-common.version>
172-
<gax.version>1.19.0</gax.version>
173-
<gax-grpc.version>1.19.0</gax-grpc.version>
174-
<gax-httpjson.version>0.36.0</gax-httpjson.version>
171+
<api-common.version>1.5.0</api-common.version>
172+
<gax.version>1.20.0</gax.version>
173+
<gax-grpc.version>1.20.0</gax-grpc.version>
174+
<gax-httpjson.version>0.37.0</gax-httpjson.version>
175175
<generated-proto-beta.version>0.4.0</generated-proto-beta.version>
176176
<generated-proto-ga.version>1.3.0</generated-proto-ga.version>
177177
</properties>

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@
138138
<site.installationModule>google-cloud</site.installationModule>
139139
<bom.version>0.39.1-alpha-SNAPSHOT</bom.version><!-- {x-version-update:google-cloud-pom:current} -->
140140
<api-client.version>1.23.0</api-client.version>
141-
<gax.version>1.19.0</gax.version>
141+
<gax.version>1.20.0</gax.version>
142142
<google.auth.version>0.9.0</google.auth.version>
143143
<grpc.version>1.9.0</grpc.version>
144144
<nettyssl.version>2.0.7.Final</nettyssl.version>

0 commit comments

Comments
 (0)