diff --git a/java/main/com/facebook/profilo/core/ProfiloConstants.java b/java/main/com/facebook/profilo/core/ProfiloConstants.java index 845bf0ae..f31e561e 100644 --- a/java/main/com/facebook/profilo/core/ProfiloConstants.java +++ b/java/main/com/facebook/profilo/core/ProfiloConstants.java @@ -43,6 +43,9 @@ public final class ProfiloConstants { public static final String TIME_SOURCE_PARAM = "provider.stack_trace.time_source"; public static final String TRACE_CONFIG_COINFLIP_SAMPLE_RATE = "trace_config.coinflip_sample_rate"; + public static final String TRACE_CONFIG_TRACE_CONFIG_ID_SWITCH = + "trace_config.trace_config_id_switch"; + public static final String TRACE_CONFIG_ID = "trace_config.id"; public static int packRemoteAbortReason(int abortReason) { return (abortReason | REMOTE_PROCESS_BIT); diff --git a/java/main/com/facebook/profilo/core/TraceOrchestrator.java b/java/main/com/facebook/profilo/core/TraceOrchestrator.java index ae276aee..1d95fa00 100644 --- a/java/main/com/facebook/profilo/core/TraceOrchestrator.java +++ b/java/main/com/facebook/profilo/core/TraceOrchestrator.java @@ -13,6 +13,9 @@ */ package com.facebook.profilo.core; +import static com.facebook.profilo.core.ProfiloConstants.TRACE_CONFIG_ID; +import static com.facebook.profilo.core.ProfiloConstants.TRACE_CONFIG_TRACE_CONFIG_ID_SWITCH; + import android.annotation.SuppressLint; import android.content.Context; import android.os.Process; @@ -394,6 +397,18 @@ public void onTraceStop(TraceContext context) { syncProviders = mSyncTraceProviders; } if (mIsMainProcess) { + boolean useTraceConfigId = + context.mTraceConfigExtras.getBoolParam(TRACE_CONFIG_TRACE_CONFIG_ID_SWITCH, false); + long configId = 0; + if (useTraceConfigId) { + String configIdStr = context.mTraceConfigExtras.getStringParam(TRACE_CONFIG_ID, null); + if (configIdStr != null) { + configId = Long.parseLong(configIdStr); + } + } + if (configId == 0 && context.config != null) { + configId = context.config.getID(); + } BufferLogger.writeStandardEntry( context.mainBuffer, Logger.FILL_TIMESTAMP | Logger.FILL_TID, @@ -402,7 +417,7 @@ public void onTraceStop(TraceContext context) { ProfiloConstants.NONE, Identifiers.CONFIG_ID, ProfiloConstants.NONE, - context.config == null ? 0 : context.config.getID()); + configId); } int tracingProviders = 0;