Skip to content

Commit d466ef0

Browse files
authored
Add transaction related metrics (#1900)
1 parent ebbdfb9 commit d466ef0

13 files changed

+251
-132
lines changed

google-cloud-firestore/src/main/java/com/google/cloud/firestore/AggregateQuery.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.google.cloud.Timestamp;
3030
import com.google.cloud.firestore.telemetry.MetricsUtil.MetricsContext;
3131
import com.google.cloud.firestore.telemetry.TelemetryConstants;
32+
import com.google.cloud.firestore.telemetry.TelemetryConstants.MetricType;
3233
import com.google.cloud.firestore.telemetry.TraceUtil;
3334
import com.google.cloud.firestore.telemetry.TraceUtil.Scope;
3435
import com.google.cloud.firestore.v1.FirestoreSettings;
@@ -223,12 +224,12 @@ ApiFuture<T> getFuture() {
223224
}
224225

225226
void deliverFirstResponse() {
226-
metricsContext.recordFirstResponseLatency();
227+
metricsContext.recordLatency(MetricType.FIRST_RESPONSE_LATENCY);
227228
}
228229

229230
void deliverError(Throwable throwable) {
230231
future.setException(throwable);
231-
metricsContext.recordEndToEndLatency(throwable);
232+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, throwable);
232233
}
233234

234235
void deliverResult(
@@ -238,7 +239,7 @@ void deliverResult(
238239
try {
239240
T result = processResult(serverData, readTime, metrics);
240241
future.set(result);
241-
metricsContext.recordEndToEndLatency();
242+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY);
242243
} catch (Exception error) {
243244
deliverError(error);
244245
}

google-cloud-firestore/src/main/java/com/google/cloud/firestore/BulkWriter.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.google.api.gax.rpc.StatusCode.Code;
2929
import com.google.cloud.firestore.telemetry.MetricsUtil.MetricsContext;
3030
import com.google.cloud.firestore.telemetry.TelemetryConstants;
31+
import com.google.cloud.firestore.telemetry.TelemetryConstants.MetricType;
3132
import com.google.cloud.firestore.telemetry.TraceUtil;
3233
import com.google.cloud.firestore.telemetry.TraceUtil.Context;
3334
import com.google.cloud.firestore.telemetry.TraceUtil.Scope;
@@ -935,10 +936,10 @@ private void sendBatchLocked(final BulkCommitBatch batch, final boolean flush) {
935936
},
936937
bulkWriterExecutor);
937938
span.endAtFuture(result);
938-
metricsContext.recordEndToEndLatencyAtFuture(result);
939+
metricsContext.recordLatencyAtFuture(MetricType.END_TO_END_LATENCY, result);
939940
} catch (Exception error) {
940941
span.end(error);
941-
metricsContext.recordEndToEndLatency(error);
942+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, error);
942943
throw error;
943944
}
944945
} else {

google-cloud-firestore/src/main/java/com/google/cloud/firestore/CollectionGroup.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.google.api.gax.rpc.ApiStreamObserver;
2424
import com.google.cloud.firestore.telemetry.MetricsUtil.MetricsContext;
2525
import com.google.cloud.firestore.telemetry.TelemetryConstants;
26+
import com.google.cloud.firestore.telemetry.TelemetryConstants.MetricType;
2627
import com.google.cloud.firestore.telemetry.TraceUtil;
2728
import com.google.cloud.firestore.telemetry.TraceUtil.Scope;
2829
import com.google.cloud.firestore.v1.FirestoreClient.PartitionQueryPagedResponse;
@@ -137,15 +138,15 @@ public ApiFuture<List<QueryPartition>> getPartitions(long desiredPartitionCount)
137138
},
138139
MoreExecutors.directExecutor());
139140
span.endAtFuture(result);
140-
metricsContext.recordEndToEndLatencyAtFuture(result);
141+
metricsContext.recordLatencyAtFuture(MetricType.END_TO_END_LATENCY, result);
141142
return result;
142143
} catch (ApiException exception) {
143144
span.end(exception);
144-
metricsContext.recordEndToEndLatency(exception);
145+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, exception);
145146
throw FirestoreException.forApiException(exception);
146147
} catch (Throwable throwable) {
147148
span.end(throwable);
148-
metricsContext.recordEndToEndLatency(throwable);
149+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, throwable);
149150
throw throwable;
150151
}
151152
}

google-cloud-firestore/src/main/java/com/google/cloud/firestore/CollectionReference.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.google.cloud.firestore.spi.v1.FirestoreRpc;
2727
import com.google.cloud.firestore.telemetry.MetricsUtil.MetricsContext;
2828
import com.google.cloud.firestore.telemetry.TelemetryConstants;
29+
import com.google.cloud.firestore.telemetry.TelemetryConstants.MetricType;
2930
import com.google.cloud.firestore.telemetry.TraceUtil;
3031
import com.google.cloud.firestore.telemetry.TraceUtil.Scope;
3132
import com.google.cloud.firestore.v1.FirestoreClient.ListDocumentsPagedResponse;
@@ -184,15 +185,15 @@ public void remove() {
184185
}
185186
};
186187
span.end();
187-
metricsContext.recordEndToEndLatency();
188+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY);
188189
return result;
189190
} catch (ApiException exception) {
190191
span.end(exception);
191-
metricsContext.recordEndToEndLatency(exception);
192+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, exception);
192193
throw FirestoreException.forApiException(exception);
193194
} catch (Throwable throwable) {
194195
span.end(throwable);
195-
metricsContext.recordEndToEndLatency(throwable);
196+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, throwable);
196197
throw throwable;
197198
}
198199
}
@@ -229,11 +230,11 @@ public ApiFuture<DocumentReference> add(@Nonnull final Map<String, Object> field
229230
ApiFutures.transform(
230231
createFuture, writeResult -> documentReference, MoreExecutors.directExecutor());
231232
span.endAtFuture(result);
232-
metricsContext.recordEndToEndLatencyAtFuture(result);
233+
metricsContext.recordLatencyAtFuture(MetricType.END_TO_END_LATENCY, result);
233234
return result;
234235
} catch (Exception error) {
235236
span.end(error);
236-
metricsContext.recordEndToEndLatency(error);
237+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, error);
237238
throw error;
238239
}
239240
}

google-cloud-firestore/src/main/java/com/google/cloud/firestore/DocumentReference.java

Lines changed: 35 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.google.cloud.firestore.telemetry.MetricsUtil;
2525
import com.google.cloud.firestore.telemetry.MetricsUtil.MetricsContext;
2626
import com.google.cloud.firestore.telemetry.TelemetryConstants;
27+
import com.google.cloud.firestore.telemetry.TelemetryConstants.MetricType;
2728
import com.google.cloud.firestore.telemetry.TraceUtil;
2829
import com.google.cloud.firestore.telemetry.TraceUtil.Scope;
2930
import com.google.cloud.firestore.v1.FirestoreClient.ListCollectionIdsPagedResponse;
@@ -165,11 +166,11 @@ public ApiFuture<WriteResult> create(@Nonnull Map<String, Object> fields) {
165166
WriteBatch writeBatch = rpcContext.getFirestore().batch();
166167
ApiFuture<WriteResult> result = extractFirst(writeBatch.create(this, fields).commit());
167168
span.endAtFuture(result);
168-
metricsContext.recordEndToEndLatencyAtFuture(result);
169+
metricsContext.recordLatencyAtFuture(MetricType.END_TO_END_LATENCY, result);
169170
return result;
170171
} catch (Exception error) {
171172
span.end(error);
172-
metricsContext.recordEndToEndLatency(error);
173+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, error);
173174
throw error;
174175
}
175176
}
@@ -191,11 +192,11 @@ public ApiFuture<WriteResult> create(@Nonnull Object pojo) {
191192
WriteBatch writeBatch = rpcContext.getFirestore().batch();
192193
ApiFuture<WriteResult> result = extractFirst(writeBatch.create(this, pojo).commit());
193194
span.endAtFuture(result);
194-
metricsContext.recordEndToEndLatencyAtFuture(result);
195+
metricsContext.recordLatencyAtFuture(MetricType.END_TO_END_LATENCY, result);
195196
return result;
196197
} catch (Exception error) {
197198
span.end(error);
198-
metricsContext.recordEndToEndLatency(error);
199+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, error);
199200
throw error;
200201
}
201202
}
@@ -217,11 +218,11 @@ public ApiFuture<WriteResult> set(@Nonnull Map<String, Object> fields) {
217218
WriteBatch writeBatch = rpcContext.getFirestore().batch();
218219
ApiFuture<WriteResult> result = extractFirst(writeBatch.set(this, fields).commit());
219220
span.endAtFuture(result);
220-
metricsContext.recordEndToEndLatencyAtFuture(result);
221+
metricsContext.recordLatencyAtFuture(MetricType.END_TO_END_LATENCY, result);
221222
return result;
222223
} catch (Exception error) {
223224
span.end(error);
224-
metricsContext.recordEndToEndLatency(error);
225+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, error);
225226
throw error;
226227
}
227228
}
@@ -246,11 +247,11 @@ public ApiFuture<WriteResult> set(
246247
WriteBatch writeBatch = rpcContext.getFirestore().batch();
247248
ApiFuture<WriteResult> result = extractFirst(writeBatch.set(this, fields, options).commit());
248249
span.endAtFuture(result);
249-
metricsContext.recordEndToEndLatencyAtFuture(result);
250+
metricsContext.recordLatencyAtFuture(MetricType.END_TO_END_LATENCY, result);
250251
return result;
251252
} catch (Exception error) {
252253
span.end(error);
253-
metricsContext.recordEndToEndLatency(error);
254+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, error);
254255
throw error;
255256
}
256257
}
@@ -272,11 +273,11 @@ public ApiFuture<WriteResult> set(@Nonnull Object pojo) {
272273
WriteBatch writeBatch = rpcContext.getFirestore().batch();
273274
ApiFuture<WriteResult> result = extractFirst(writeBatch.set(this, pojo).commit());
274275
span.endAtFuture(result);
275-
metricsContext.recordEndToEndLatencyAtFuture(result);
276+
metricsContext.recordLatencyAtFuture(MetricType.END_TO_END_LATENCY, result);
276277
return result;
277278
} catch (Exception error) {
278279
span.end(error);
279-
metricsContext.recordEndToEndLatency(error);
280+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, error);
280281
throw error;
281282
}
282283
}
@@ -300,11 +301,11 @@ public ApiFuture<WriteResult> set(@Nonnull Object pojo, @Nonnull SetOptions opti
300301
WriteBatch writeBatch = rpcContext.getFirestore().batch();
301302
ApiFuture<WriteResult> result = extractFirst(writeBatch.set(this, pojo, options).commit());
302303
span.endAtFuture(result);
303-
metricsContext.recordEndToEndLatencyAtFuture(result);
304+
metricsContext.recordLatencyAtFuture(MetricType.END_TO_END_LATENCY, result);
304305
return result;
305306
} catch (Exception error) {
306307
span.end(error);
307-
metricsContext.recordEndToEndLatency(error);
308+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, error);
308309
throw error;
309310
}
310311
}
@@ -326,11 +327,11 @@ public ApiFuture<WriteResult> update(@Nonnull Map<String, Object> fields) {
326327
WriteBatch writeBatch = rpcContext.getFirestore().batch();
327328
ApiFuture<WriteResult> result = extractFirst(writeBatch.update(this, fields).commit());
328329
span.endAtFuture(result);
329-
metricsContext.recordEndToEndLatencyAtFuture(result);
330+
metricsContext.recordLatencyAtFuture(MetricType.END_TO_END_LATENCY, result);
330331
return result;
331332
} catch (Exception error) {
332333
span.end(error);
333-
metricsContext.recordEndToEndLatency(error);
334+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, error);
334335
throw error;
335336
}
336337
}
@@ -354,11 +355,11 @@ public ApiFuture<WriteResult> update(@Nonnull Map<String, Object> fields, Precon
354355
ApiFuture<WriteResult> result =
355356
extractFirst(writeBatch.update(this, fields, options).commit());
356357
span.endAtFuture(result);
357-
metricsContext.recordEndToEndLatencyAtFuture(result);
358+
metricsContext.recordLatencyAtFuture(MetricType.END_TO_END_LATENCY, result);
358359
return result;
359360
} catch (Exception error) {
360361
span.end(error);
361-
metricsContext.recordEndToEndLatency(error);
362+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, error);
362363
throw error;
363364
}
364365
}
@@ -384,11 +385,11 @@ public ApiFuture<WriteResult> update(
384385
ApiFuture<WriteResult> result =
385386
extractFirst(writeBatch.update(this, field, value, moreFieldsAndValues).commit());
386387
span.endAtFuture(result);
387-
metricsContext.recordEndToEndLatencyAtFuture(result);
388+
metricsContext.recordLatencyAtFuture(MetricType.END_TO_END_LATENCY, result);
388389
return result;
389390
} catch (Exception error) {
390391
span.end(error);
391-
metricsContext.recordEndToEndLatency(error);
392+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, error);
392393
throw error;
393394
}
394395
}
@@ -414,11 +415,11 @@ public ApiFuture<WriteResult> update(
414415
ApiFuture<WriteResult> result =
415416
extractFirst(writeBatch.update(this, fieldPath, value, moreFieldsAndValues).commit());
416417
span.endAtFuture(result);
417-
metricsContext.recordEndToEndLatencyAtFuture(result);
418+
metricsContext.recordLatencyAtFuture(MetricType.END_TO_END_LATENCY, result);
418419
return result;
419420
} catch (Exception error) {
420421
span.end(error);
421-
metricsContext.recordEndToEndLatency(error);
422+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, error);
422423
throw error;
423424
}
424425
}
@@ -449,11 +450,11 @@ public ApiFuture<WriteResult> update(
449450
extractFirst(
450451
writeBatch.update(this, options, field, value, moreFieldsAndValues).commit());
451452
span.endAtFuture(result);
452-
metricsContext.recordEndToEndLatencyAtFuture(result);
453+
metricsContext.recordLatencyAtFuture(MetricType.END_TO_END_LATENCY, result);
453454
return result;
454455
} catch (Exception error) {
455456
span.end(error);
456-
metricsContext.recordEndToEndLatency(error);
457+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, error);
457458
throw error;
458459
}
459460
}
@@ -484,11 +485,11 @@ public ApiFuture<WriteResult> update(
484485
extractFirst(
485486
writeBatch.update(this, options, fieldPath, value, moreFieldsAndValues).commit());
486487
span.endAtFuture(result);
487-
metricsContext.recordEndToEndLatencyAtFuture(result);
488+
metricsContext.recordLatencyAtFuture(MetricType.END_TO_END_LATENCY, result);
488489
return result;
489490
} catch (Exception error) {
490491
span.end(error);
491-
metricsContext.recordEndToEndLatency(error);
492+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, error);
492493
throw error;
493494
}
494495
}
@@ -509,11 +510,11 @@ public ApiFuture<WriteResult> delete(@Nonnull Precondition options) {
509510
WriteBatch writeBatch = rpcContext.getFirestore().batch();
510511
ApiFuture<WriteResult> result = extractFirst(writeBatch.delete(this, options).commit());
511512
span.endAtFuture(result);
512-
metricsContext.recordEndToEndLatencyAtFuture(result);
513+
metricsContext.recordLatencyAtFuture(MetricType.END_TO_END_LATENCY, result);
513514
return result;
514515
} catch (Exception error) {
515516
span.end(error);
516-
metricsContext.recordEndToEndLatency(error);
517+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, error);
517518
throw error;
518519
}
519520
}
@@ -533,11 +534,11 @@ public ApiFuture<WriteResult> delete() {
533534
WriteBatch writeBatch = rpcContext.getFirestore().batch();
534535
ApiFuture<WriteResult> result = extractFirst(writeBatch.delete(this).commit());
535536
span.endAtFuture(result);
536-
metricsContext.recordEndToEndLatencyAtFuture(result);
537+
metricsContext.recordLatencyAtFuture(MetricType.END_TO_END_LATENCY, result);
537538
return result;
538539
} catch (Exception error) {
539540
span.end(error);
540-
metricsContext.recordEndToEndLatency(error);
541+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, error);
541542
throw error;
542543
}
543544
}
@@ -558,11 +559,11 @@ public ApiFuture<DocumentSnapshot> get() {
558559
try (Scope ignored = span.makeCurrent()) {
559560
ApiFuture<DocumentSnapshot> result = extractFirst(rpcContext.getFirestore().getAll(this));
560561
span.endAtFuture(result);
561-
metricsContext.recordEndToEndLatencyAtFuture(result);
562+
metricsContext.recordLatencyAtFuture(MetricType.END_TO_END_LATENCY, result);
562563
return result;
563564
} catch (Exception error) {
564565
span.end(error);
565-
metricsContext.recordEndToEndLatency(error);
566+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, error);
566567
throw error;
567568
}
568569
}
@@ -585,11 +586,11 @@ public ApiFuture<DocumentSnapshot> get(FieldMask fieldMask) {
585586
ApiFuture<DocumentSnapshot> result =
586587
extractFirst(rpcContext.getFirestore().getAll(new DocumentReference[] {this}, fieldMask));
587588
span.endAtFuture(result);
588-
metricsContext.recordEndToEndLatencyAtFuture(result);
589+
metricsContext.recordLatencyAtFuture(MetricType.END_TO_END_LATENCY, result);
589590
return result;
590591
} catch (Exception error) {
591592
span.end(error);
592-
metricsContext.recordEndToEndLatency(error);
593+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, error);
593594
throw error;
594595
}
595596
}
@@ -641,11 +642,11 @@ public void remove() {
641642
}
642643
};
643644
span.end();
644-
metricsContext.recordEndToEndLatency();
645+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY);
645646
return result;
646647
} catch (ApiException exception) {
647648
span.end(exception);
648-
metricsContext.recordEndToEndLatency(exception);
649+
metricsContext.recordLatency(MetricType.END_TO_END_LATENCY, exception);
649650
throw FirestoreException.forApiException(exception);
650651
}
651652
}

0 commit comments

Comments
 (0)