Skip to content

Commit 190f1e6

Browse files
feat: populate client_stats in AppendRowsRequest
1 parent 6bb477b commit 190f1e6

2 files changed

Lines changed: 24 additions & 0 deletions

File tree

‎java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/ConnectionWorker.java‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1289,6 +1289,11 @@ private void appendLoop() {
12891289
}
12901290
firstRequestForTableOrSchemaSwitch = false;
12911291

1292+
ClientStats clientStats = createClientStats(wrapper);
1293+
if (!clientStats.equals(ClientStats.getDefaultInstance())) {
1294+
originalRequestBuilder.setClientStats(clientStats);
1295+
}
1296+
12921297
requestProfilerHook.startOperation(
12931298
RequestProfiler.OperationName.RESPONSE_LATENCY, requestUniqueId);
12941299

@@ -1307,6 +1312,20 @@ private void appendLoop() {
13071312
cleanupConnectionAndRequests(/* avoidBlocking= */ false);
13081313
}
13091314

1315+
private ClientStats createClientStats(AppendRequestAndResponse requestWrapper) {
1316+
ClientStats.Builder clientStatsBuilder = ClientStats.newBuilder();
1317+
ClientStats.RequestStats.Builder requestStatsBuilder = ClientStats.RequestStats.newBuilder();
1318+
boolean requestStatsModified = false;
1319+
if (requestWrapper.requestSendTimeStamp != null) {
1320+
requestStatsBuilder.setSendTimeMillis(requestWrapper.requestSendTimeStamp.toEpochMilli());
1321+
requestStatsModified = true;
1322+
}
1323+
if (requestStatsModified) {
1324+
clientStatsBuilder.setRequestStats(requestStatsBuilder.build());
1325+
}
1326+
return clientStatsBuilder.build();
1327+
}
1328+
13101329
@Nullable
13111330
private AppendRowsSchema getSchema(AppendRowsRequest request) {
13121331
if (request.hasProtoRows()) {

‎java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/ConnectionWorkerTest.java‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1722,6 +1722,11 @@ void testEarliestSendTime_retryScenario() throws Exception {
17221722

17231723
// Once exhausted, state should be null
17241724
assertThat(connectionWorker.getEarliestSendTime()).isNull();
1725+
1726+
AppendRowsRequest initialRequest = testBigQueryWrite.getAppendRequests().get(0);
1727+
AppendRowsRequest retryRequest = testBigQueryWrite.getAppendRequests().get(1);
1728+
assertThat(retryRequest.getClientStats().getRequestStats().getSendTimeMillis())
1729+
.isAtLeast(initialRequest.getClientStats().getRequestStats().getSendTimeMillis());
17251730
}
17261731
}
17271732
}

0 commit comments

Comments
 (0)