Skip to content

Commit 6fb776e

Browse files
committed
Add more legacy session verification, move up gauge collection, and update comments. (#7197)
1 parent e613bfc commit 6fb776e

File tree

3 files changed

+27
-10
lines changed

3 files changed

+27
-10
lines changed

firebase-perf/src/main/java/com/google/firebase/perf/logging/FirebaseSessionsEnforcementCheck.kt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,28 @@ package com.google.firebase.perf.logging
1818

1919
import com.google.firebase.perf.session.PerfSession
2020
import com.google.firebase.perf.session.isLegacy
21+
import com.google.firebase.perf.v1.PerfSession as ProtoPerfSession
2122

2223
class FirebaseSessionsEnforcementCheck {
2324
companion object {
2425
/** When enabled, failed preconditions will cause assertion errors for debugging. */
2526
@JvmStatic var enforcement: Boolean = false
2627
private var logger: AndroidLogger = AndroidLogger.getInstance()
2728

29+
@JvmStatic
30+
fun checkSession(sessions: List<ProtoPerfSession>, failureMessage: String) {
31+
sessions.forEach { checkSession(it.sessionId, failureMessage) }
32+
}
33+
2834
@JvmStatic
2935
fun checkSession(session: PerfSession, failureMessage: String) {
30-
if (session.isLegacy()) {
31-
logger.debug("legacy session ${session.sessionId()}: $failureMessage")
36+
checkSession(session.sessionId(), failureMessage)
37+
}
38+
39+
@JvmStatic
40+
fun checkSession(sessionId: String, failureMessage: String) {
41+
if (sessionId.isLegacy()) {
42+
logger.debug("legacy session ${sessionId}: $failureMessage")
3243
assert(!enforcement) { failureMessage }
3344
}
3445
}

firebase-perf/src/main/java/com/google/firebase/perf/session/SessionManager.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ public final PerfSession perfSession() {
5252
}
5353

5454
private SessionManager() {
55-
// session should quickly updated by session subscriber.
55+
// Creates a legacy session by default. This is a safety net to allow initializing
56+
// SessionManager - but the current implementation replaces it immediately.
5657
this(GaugeManager.getInstance(), PerfSession.createWithId(null));
5758
FirebaseSessionsEnforcementCheck.checkSession(perfSession, "SessionManager()");
5859
}
@@ -101,7 +102,11 @@ public void updatePerfSession(PerfSession perfSession) {
101102

102103
this.perfSession = perfSession;
103104

104-
// TODO(b/394127311): Update/verify behavior for Firebase Sessions.
105+
// Start or stop the gauge data collection ASAP.
106+
startOrStopCollectingGauges();
107+
108+
// Log gauge metadata.
109+
logGaugeMetadataIfCollectionEnabled();
105110

106111
synchronized (clients) {
107112
for (Iterator<WeakReference<SessionAwareObject>> i = clients.iterator(); i.hasNext(); ) {
@@ -115,12 +120,6 @@ public void updatePerfSession(PerfSession perfSession) {
115120
}
116121
}
117122
}
118-
119-
// Log gauge metadata.
120-
logGaugeMetadataIfCollectionEnabled();
121-
122-
// Start of stop the gauge data collection.
123-
startOrStopCollectingGauges();
124123
}
125124

126125
/**
@@ -129,6 +128,7 @@ public void updatePerfSession(PerfSession perfSession) {
129128
* PerfSession} was already initialized a moment ago by getInstance(). Unlike updatePerfSession,
130129
* this does not reset the perfSession.
131130
*/
131+
@Deprecated // TODO(b/394127311): Delete this. AQS early initialization updates the session ASAP.
132132
public void initializeGaugeCollection() {
133133
startOrStopCollectingGauges();
134134
}

firebase-perf/src/main/java/com/google/firebase/perf/transport/TransportManager.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import com.google.firebase.perf.config.ConfigResolver;
4040
import com.google.firebase.perf.logging.AndroidLogger;
4141
import com.google.firebase.perf.logging.ConsoleUrlGenerator;
42+
import com.google.firebase.perf.logging.FirebaseSessionsEnforcementCheck;
4243
import com.google.firebase.perf.metrics.validator.PerfMetricValidator;
4344
import com.google.firebase.perf.session.SessionManager;
4445
import com.google.firebase.perf.util.Constants;
@@ -299,6 +300,8 @@ public void log(final TraceMetric traceMetric) {
299300
* {@link #isAllowedToDispatch(PerfMetric)}).
300301
*/
301302
public void log(final TraceMetric traceMetric, final ApplicationProcessState appState) {
303+
FirebaseSessionsEnforcementCheck.checkSession(
304+
traceMetric.getPerfSessionsList(), "log TraceMetric");
302305
executorService.execute(
303306
() -> syncLog(PerfMetric.newBuilder().setTraceMetric(traceMetric), appState));
304307
}
@@ -327,6 +330,8 @@ public void log(final NetworkRequestMetric networkRequestMetric) {
327330
*/
328331
public void log(
329332
final NetworkRequestMetric networkRequestMetric, final ApplicationProcessState appState) {
333+
FirebaseSessionsEnforcementCheck.checkSession(
334+
networkRequestMetric.getPerfSessionsList(), "log NetworkRequestMetric");
330335
executorService.execute(
331336
() ->
332337
syncLog(
@@ -356,6 +361,7 @@ public void log(final GaugeMetric gaugeMetric) {
356361
* {@link #isAllowedToDispatch(PerfMetric)}).
357362
*/
358363
public void log(final GaugeMetric gaugeMetric, final ApplicationProcessState appState) {
364+
FirebaseSessionsEnforcementCheck.checkSession(gaugeMetric.getSessionId(), "log GaugeMetric");
359365
executorService.execute(
360366
() -> syncLog(PerfMetric.newBuilder().setGaugeMetric(gaugeMetric), appState));
361367
}

0 commit comments

Comments
 (0)