Skip to content

Commit 28e3a68

Browse files
authored
Check if the trace times are not NULL before creating the AppStartTrace. (#4762)
1 parent aa2a424 commit 28e3a68

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed

firebase-perf/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Unreleased
22

3+
* [fixed] Fixed app start trace creation where some measured time could be NULL (#4730).
4+
35

46
# 20.3.2
57
* [changed] Updated JavaLite, protoc, protobuf-java-util to 3.21.11.

firebase-perf/src/main/java/com/google/firebase/perf/metrics/AppStartTrace.java

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -411,19 +411,22 @@ private void logAppStartTrace() {
411411
.setDurationUs(getClassLoadTimeCompat().getDurationMicros(onCreateTime));
412412
subtraces.add(traceMetricBuilder.build());
413413

414-
traceMetricBuilder = TraceMetric.newBuilder();
415-
traceMetricBuilder
416-
.setName(Constants.TraceNames.ON_START_TRACE_NAME.toString())
417-
.setClientStartTimeUs(onCreateTime.getMicros())
418-
.setDurationUs(onCreateTime.getDurationMicros(onStartTime));
419-
subtraces.add(traceMetricBuilder.build());
420-
421-
traceMetricBuilder = TraceMetric.newBuilder();
422-
traceMetricBuilder
423-
.setName(Constants.TraceNames.ON_RESUME_TRACE_NAME.toString())
424-
.setClientStartTimeUs(onStartTime.getMicros())
425-
.setDurationUs(onStartTime.getDurationMicros(onResumeTime));
426-
subtraces.add(traceMetricBuilder.build());
414+
// OnStartTime is not captured in all situations, so checking for valid value before using it.
415+
if (onStartTime != null) {
416+
traceMetricBuilder = TraceMetric.newBuilder();
417+
traceMetricBuilder
418+
.setName(Constants.TraceNames.ON_START_TRACE_NAME.toString())
419+
.setClientStartTimeUs(onCreateTime.getMicros())
420+
.setDurationUs(onCreateTime.getDurationMicros(onStartTime));
421+
subtraces.add(traceMetricBuilder.build());
422+
423+
traceMetricBuilder = TraceMetric.newBuilder();
424+
traceMetricBuilder
425+
.setName(Constants.TraceNames.ON_RESUME_TRACE_NAME.toString())
426+
.setClientStartTimeUs(onStartTime.getMicros())
427+
.setDurationUs(onStartTime.getDurationMicros(onResumeTime));
428+
subtraces.add(traceMetricBuilder.build());
429+
}
427430

428431
metric.addAllSubtraces(subtraces).addPerfSessions(this.startSession.build());
429432

0 commit comments

Comments
 (0)