From 624e6dc1b13bd9946fa331947f68ec2e5e13d9f9 Mon Sep 17 00:00:00 2001 From: Hanson Ho Date: Thu, 12 Sep 2024 10:58:15 -0700 Subject: [PATCH] Add the pretruncation framecount to ThreadInfo (#1359) ## Goal Send the pre-truncation frame count via the ThreadInfo. This affects ANRs but all the other stacktraces as well that use that POJO. --- .../config/behavior/AnrBehaviorImpl.kt | 2 +- .../config/behavior/AnrBehaviorImplTest.kt | 2 +- .../embracesdk/internal/anr/AnrOtelMapper.kt | 2 +- .../internal/anr/AnrIntervalTest.kt | 3 +- .../internal/anr/AnrOtelMapperTest.kt | 30 +++- .../internal/anr/ThreadInfoCollectorTest.kt | 17 +- .../embracesdk/internal/payload/ThreadInfo.kt | 20 +-- .../src/main/baseline-prof.txt | 166 +----------------- .../embracesdk/fakes/FakeAnrIntervals.kt | 3 +- .../fakes/behavior/FakeAnrBehavior.kt | 3 +- 10 files changed, 63 insertions(+), 185 deletions(-) diff --git a/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl.kt b/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl.kt index dde7349e27..8c3512bd0f 100644 --- a/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl.kt +++ b/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl.kt @@ -31,7 +31,7 @@ class AnrBehaviorImpl( private const val DEFAULT_ANR_PROCESS_ERRORS_SCHEDULER_EXTRA_TIME_ALLOWANCE: Long = 30 * 1000 private const val DEFAULT_ANR_MAX_PER_INTERVAL = 80 - private const val DEFAULT_STACKTRACE_FRAME_LIMIT = 100 + private const val DEFAULT_STACKTRACE_FRAME_LIMIT = 200 private const val DEFAULT_ANR_MIN_THREAD_PRIORITY_TO_CAPTURE = 0 private const val DEFAULT_ANR_MAX_ANR_INTERVALS_PER_SESSION = 5 private const val DEFAULT_ANR_MIN_CAPTURE_DURATION = 1000 diff --git a/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImplTest.kt b/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImplTest.kt index 2500c563f9..0da1525be2 100644 --- a/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImplTest.kt +++ b/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImplTest.kt @@ -65,7 +65,7 @@ internal class AnrBehaviorImplTest { assertEquals(5000, getAnrProcessErrorsDelayMs()) assertEquals(30000, getAnrProcessErrorsSchedulerExtraTimeAllowanceMs()) assertEquals(80, getMaxStacktracesPerInterval()) - assertEquals(100, getStacktraceFrameLimit()) + assertEquals(200, getStacktraceFrameLimit()) assertEquals(5, getMaxAnrIntervalsPerSession()) assertEquals(0, getMinThreadPriority()) assertEquals(1000, getMinDuration()) diff --git a/embrace-android-features/src/main/kotlin/io/embrace/android/embracesdk/internal/anr/AnrOtelMapper.kt b/embrace-android-features/src/main/kotlin/io/embrace/android/embracesdk/internal/anr/AnrOtelMapper.kt index ddb6d01c80..a8e07c2f9f 100644 --- a/embrace-android-features/src/main/kotlin/io/embrace/android/embracesdk/internal/anr/AnrOtelMapper.kt +++ b/embrace-android-features/src/main/kotlin/io/embrace/android/embracesdk/internal/anr/AnrOtelMapper.kt @@ -71,9 +71,9 @@ class AnrOtelMapper( sample.threads?.singleOrNull()?.let { thread -> attrs.add(Attribute(JvmAttributes.JVM_THREAD_STATE.key, thread.state.toString())) attrs.add(Attribute("thread_priority", thread.priority.toString())) + attrs.add(Attribute("frame_count", thread.frameCount.toString())) thread.lines?.let { lines -> - attrs.add(Attribute("frame_count", lines.size.toString())) attrs.add(Attribute(ExceptionAttributes.EXCEPTION_STACKTRACE.key, lines.joinToString("\n"))) } } diff --git a/embrace-android-features/src/test/java/io/embrace/android/embracesdk/internal/anr/AnrIntervalTest.kt b/embrace-android-features/src/test/java/io/embrace/android/embracesdk/internal/anr/AnrIntervalTest.kt index 11ca3abd8c..2135931499 100644 --- a/embrace-android-features/src/test/java/io/embrace/android/embracesdk/internal/anr/AnrIntervalTest.kt +++ b/embrace-android-features/src/test/java/io/embrace/android/embracesdk/internal/anr/AnrIntervalTest.kt @@ -19,7 +19,8 @@ internal class AnrIntervalTest { listOf( "java.base/java.lang.Thread.getStackTrace(Thread.java:1602)", "io.embrace.android.embracesdk.ThreadInfoTest.testThreadInfoSerialization(ThreadInfoTest.kt:18)" - ) + ), + 2 ) private val anrSample = AnrSample(150980980980, listOf(threadInfo), 0) diff --git a/embrace-android-features/src/test/java/io/embrace/android/embracesdk/internal/anr/AnrOtelMapperTest.kt b/embrace-android-features/src/test/java/io/embrace/android/embracesdk/internal/anr/AnrOtelMapperTest.kt index b58f892066..a416918908 100644 --- a/embrace-android-features/src/test/java/io/embrace/android/embracesdk/internal/anr/AnrOtelMapperTest.kt +++ b/embrace-android-features/src/test/java/io/embrace/android/embracesdk/internal/anr/AnrOtelMapperTest.kt @@ -41,10 +41,13 @@ internal class AnrOtelMapperTest { lines = listOf( "com.example.app.MainActivity.onCreate(MainActivity.kt:10)", "com.example.app.MainActivity.onCreate(MainActivity.kt:20)" - ) + ), + frameCount = 2 ) private val threads = listOf(stacktrace) + private val truncatedStack = stacktrace.copy(frameCount = 10000) + private val truncatedThreads = listOf(truncatedStack) private val firstSample = AnrSample( timestamp = FIRST_SAMPLE_MS, @@ -60,6 +63,13 @@ internal class AnrOtelMapperTest { threads = threads ) + private val truncatedSecondSample = AnrSample( + timestamp = SECOND_SAMPLE_MS, + sampleOverheadMs = SECOND_SAMPLE_OVERHEAD_MS, + code = AnrSample.CODE_DEFAULT, + threads = truncatedThreads + ) + private val completedInterval = AnrInterval( startTime = START_TIME_MS, endTime = END_TIME_MS, @@ -67,6 +77,13 @@ internal class AnrOtelMapperTest { anrSampleList = AnrSampleList(listOf(firstSample, secondSample)) ) + private val completedIntervalWithTruncatedSample = AnrInterval( + startTime = START_TIME_MS, + endTime = END_TIME_MS, + code = AnrInterval.CODE_DEFAULT, + anrSampleList = AnrSampleList(listOf(firstSample, truncatedSecondSample)) + ) + private val inProgressInterval = completedInterval.copy(endTime = null, lastKnownTime = LAST_KNOWN_TIME) @@ -176,6 +193,15 @@ internal class AnrOtelMapperTest { } } + @Test + fun `truncated stack shows the pre-truncated frame count`() { + anrService.data = listOf(completedIntervalWithTruncatedSample) + val spans = mapper.snapshot(false) + val events = checkNotNull(spans.single().events) + assertEquals(2, events.size) + assertSampleMapped(events[1], truncatedSecondSample) + } + private fun Span.assertCommonOtelCharacteristics() { assertNotNull(traceId) assertNotNull(spanId) @@ -201,7 +227,7 @@ internal class AnrOtelMapperTest { val thread = checkNotNull(sample.threads?.single()) assertEquals(thread.state.toString(), attrs.findAttribute(JvmAttributes.JVM_THREAD_STATE.key).data) assertEquals(thread.priority, attrs.findAttribute("thread_priority").data?.toInt()) - assertEquals(thread.lines?.size, attrs.findAttribute("frame_count").data?.toInt()) + assertEquals(thread.frameCount, attrs.findAttribute("frame_count").data?.toInt()) assertEquals(thread.lines?.joinToString("\n"), attrs.findAttribute(ExceptionAttributes.EXCEPTION_STACKTRACE.key).data) } diff --git a/embrace-android-features/src/test/java/io/embrace/android/embracesdk/internal/anr/ThreadInfoCollectorTest.kt b/embrace-android-features/src/test/java/io/embrace/android/embracesdk/internal/anr/ThreadInfoCollectorTest.kt index 769024137d..6dc65fc957 100644 --- a/embrace-android-features/src/test/java/io/embrace/android/embracesdk/internal/anr/ThreadInfoCollectorTest.kt +++ b/embrace-android-features/src/test/java/io/embrace/android/embracesdk/internal/anr/ThreadInfoCollectorTest.kt @@ -18,9 +18,9 @@ import java.util.regex.Pattern internal class ThreadInfoCollectorTest { - private val highPrioThread = ThreadInfo(1, RUNNABLE, "thread-1", MAX_PRIORITY, emptyList()) - private val medPrioThread = ThreadInfo(2, RUNNABLE, "thread-2", NORM_PRIORITY, emptyList()) - private val lowPrioThread = ThreadInfo(3, RUNNABLE, "thread-3", MIN_PRIORITY, emptyList()) + private val highPrioThread = ThreadInfo(1, RUNNABLE, "thread-1", MAX_PRIORITY, emptyList(), 0) + private val medPrioThread = ThreadInfo(2, RUNNABLE, "thread-2", NORM_PRIORITY, emptyList(), 0) + private val lowPrioThread = ThreadInfo(3, RUNNABLE, "thread-3", MIN_PRIORITY, emptyList(), 0) private lateinit var configService: ConfigService private lateinit var threadInfoCollector: ThreadInfoCollector @@ -30,7 +30,8 @@ internal class ThreadInfoCollectorTest { configService = FakeConfigService( anrBehavior = FakeAnrBehavior( allowPatternList = listOf(currentThread().name).map(Pattern::compile), - blockPatternList = listOf("Finalizer").map(Pattern::compile) + blockPatternList = listOf("Finalizer").map(Pattern::compile), + frameLimit = 5 ) ) threadInfoCollector = ThreadInfoCollector(currentThread()) @@ -126,4 +127,12 @@ internal class ThreadInfoCollectorTest { ) ) } + + @Test + fun `verify truncation of ANR stacktrace respects the config`() { + val thread = threadInfoCollector.getAllowedThreads(configService).single() + val frames = checkNotNull(thread.lines) + assertEquals(5, frames.size) + assertTrue(thread.frameCount > frames.size) + } } diff --git a/embrace-android-payload/src/main/kotlin/io/embrace/android/embracesdk/internal/payload/ThreadInfo.kt b/embrace-android-payload/src/main/kotlin/io/embrace/android/embracesdk/internal/payload/ThreadInfo.kt index bdcbf31bb5..e50a1c3ff0 100644 --- a/embrace-android-payload/src/main/kotlin/io/embrace/android/embracesdk/internal/payload/ThreadInfo.kt +++ b/embrace-android-payload/src/main/kotlin/io/embrace/android/embracesdk/internal/payload/ThreadInfo.kt @@ -35,19 +35,16 @@ data class ThreadInfo( * String representation of each line of the stack trace. */ @Json(name = "tt") - val lines: List? + val lines: List?, + + /** + * The total number of frames in the stack before truncation + */ + @Json(name = "fc") + val frameCount: Int, ) { companion object { - - /** - * Creates a [ThreadInfo] from the [Thread], [StackTraceElement][] pair, - * using the thread name and priority, and each stacktrace element as each line with a limited length. - * - * @param thread the exception - * @param maxStacktraceSize the maximum lines of a stacktrace - * @return the stacktrace instance - */ /** * Creates a [ThreadInfo] from the [Thread], [StackTraceElement][] pair, * using the thread name and priority, and each stacktrace element as each line. @@ -64,8 +61,9 @@ data class ThreadInfo( ): ThreadInfo { val name = thread.name val priority = thread.priority + val frameCount = stackTraceElements.size val lines = stackTraceElements.take(maxStacktraceSize).map(StackTraceElement::toString) - return ThreadInfo(thread.id, thread.state, name, priority, lines) + return ThreadInfo(thread.id, thread.state, name, priority, lines, frameCount) } } } diff --git a/embrace-android-sdk/src/main/baseline-prof.txt b/embrace-android-sdk/src/main/baseline-prof.txt index 10ca87adab..1dcfd5f43c 100644 --- a/embrace-android-sdk/src/main/baseline-prof.txt +++ b/embrace-android-sdk/src/main/baseline-prof.txt @@ -277,20 +277,9 @@ HSPLio/embrace/android/embracesdk/internal/TypeUtils;->()V PLio/embrace/android/embracesdk/internal/TypeUtils;->()V HSPLio/embrace/android/embracesdk/internal/TypeUtils;->typedList(Lkotlin/reflect/KClass;)Ljava/lang/reflect/ParameterizedType; PLio/embrace/android/embracesdk/internal/TypeUtils;->typedList(Lkotlin/reflect/KClass;)Ljava/lang/reflect/ParameterizedType; -Lio/embrace/android/embracesdk/internal/anr/AnrIntervalExtKt; -HSPLio/embrace/android/embracesdk/internal/anr/AnrIntervalExtKt;->deepCopy(Lio/embrace/android/embracesdk/internal/payload/AnrInterval;)Lio/embrace/android/embracesdk/internal/payload/AnrInterval; -PLio/embrace/android/embracesdk/internal/anr/AnrIntervalExtKt;->deepCopy(Lio/embrace/android/embracesdk/internal/payload/AnrInterval;)Lio/embrace/android/embracesdk/internal/payload/AnrInterval; -HSPLio/embrace/android/embracesdk/internal/anr/AnrIntervalExtKt;->hasSamples(Lio/embrace/android/embracesdk/internal/payload/AnrInterval;)Z -PLio/embrace/android/embracesdk/internal/anr/AnrIntervalExtKt;->hasSamples(Lio/embrace/android/embracesdk/internal/payload/AnrInterval;)Z Lio/embrace/android/embracesdk/internal/anr/AnrOtelMapper; HSPLio/embrace/android/embracesdk/internal/anr/AnrOtelMapper;->(Lio/embrace/android/embracesdk/internal/anr/AnrService;Lio/embrace/android/embracesdk/internal/clock/Clock;)V PLio/embrace/android/embracesdk/internal/anr/AnrOtelMapper;->(Lio/embrace/android/embracesdk/internal/anr/AnrService;Lio/embrace/android/embracesdk/internal/clock/Clock;)V -HSPLio/embrace/android/embracesdk/internal/anr/AnrOtelMapper;->mapIntervalToSpanAttributes(Lio/embrace/android/embracesdk/internal/payload/AnrInterval;)Ljava/util/List; -PLio/embrace/android/embracesdk/internal/anr/AnrOtelMapper;->mapIntervalToSpanAttributes(Lio/embrace/android/embracesdk/internal/payload/AnrInterval;)Ljava/util/List; -HSPLio/embrace/android/embracesdk/internal/anr/AnrOtelMapper;->mapIntervalToSpanEvents(Lio/embrace/android/embracesdk/internal/payload/AnrInterval;)Ljava/util/List; -PLio/embrace/android/embracesdk/internal/anr/AnrOtelMapper;->mapIntervalToSpanEvents(Lio/embrace/android/embracesdk/internal/payload/AnrInterval;)Ljava/util/List; -HSPLio/embrace/android/embracesdk/internal/anr/AnrOtelMapper;->mapSampleToSpanEvent(Lio/embrace/android/embracesdk/internal/payload/AnrSample;)Lio/embrace/android/embracesdk/internal/payload/SpanEvent; -PLio/embrace/android/embracesdk/internal/anr/AnrOtelMapper;->mapSampleToSpanEvent(Lio/embrace/android/embracesdk/internal/payload/AnrSample;)Lio/embrace/android/embracesdk/internal/payload/SpanEvent; HSPLio/embrace/android/embracesdk/internal/anr/AnrOtelMapper;->snapshot(Z)Ljava/util/List; PLio/embrace/android/embracesdk/internal/anr/AnrOtelMapper;->snapshot(Z)Ljava/util/List; Lio/embrace/android/embracesdk/internal/anr/AnrService; @@ -305,22 +294,10 @@ HSPLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;->cleanColle PLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;->cleanCollections$lambda$2(Lio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;)V HSPLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;->cleanCollections()V PLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;->cleanCollections()V -HSPLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;->findIntervalsWithSamples()Ljava/util/List; -PLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;->findIntervalsWithSamples()Ljava/util/List; HSPLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;->getAnrIntervals(Lio/embrace/android/embracesdk/internal/anr/detection/ThreadMonitoringState;Lio/embrace/android/embracesdk/internal/clock/Clock;)Ljava/util/List; PLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;->getAnrIntervals(Lio/embrace/android/embracesdk/internal/anr/detection/ThreadMonitoringState;Lio/embrace/android/embracesdk/internal/clock/Clock;)Ljava/util/List; -HSPLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;->onThreadBlocked(Ljava/lang/Thread;J)V -PLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;->onThreadBlocked(Ljava/lang/Thread;J)V -HSPLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;->onThreadBlockedInterval(Ljava/lang/Thread;J)V -PLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;->onThreadBlockedInterval(Ljava/lang/Thread;J)V -HSPLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;->onThreadUnblocked(Ljava/lang/Thread;J)V -PLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;->onThreadUnblocked(Ljava/lang/Thread;J)V -HSPLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;->reachedAnrStacktraceCaptureLimit()Z -PLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;->reachedAnrStacktraceCaptureLimit()Z HSPLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;->setConfigService(Lio/embrace/android/embracesdk/internal/config/ConfigService;)V PLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;->setConfigService(Lio/embrace/android/embracesdk/internal/config/ConfigService;)V -HSPLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;->size()I -PLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;->size()I Lio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler$$ExternalSyntheticLambda0; HSPLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler$$ExternalSyntheticLambda0;->(Lio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;)V PLio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler$$ExternalSyntheticLambda0;->(Lio/embrace/android/embracesdk/internal/anr/AnrStacktraceSampler;)V @@ -362,14 +339,6 @@ HSPLio/embrace/android/embracesdk/internal/anr/EmbraceAnrService;->onForeground$ PLio/embrace/android/embracesdk/internal/anr/EmbraceAnrService;->onForeground$lambda$4(Lio/embrace/android/embracesdk/internal/anr/EmbraceAnrService;)V HSPLio/embrace/android/embracesdk/internal/anr/EmbraceAnrService;->onForeground(ZJ)V PLio/embrace/android/embracesdk/internal/anr/EmbraceAnrService;->onForeground(ZJ)V -HSPLio/embrace/android/embracesdk/internal/anr/EmbraceAnrService;->onThreadBlocked(Ljava/lang/Thread;J)V -PLio/embrace/android/embracesdk/internal/anr/EmbraceAnrService;->onThreadBlocked(Ljava/lang/Thread;J)V -HSPLio/embrace/android/embracesdk/internal/anr/EmbraceAnrService;->onThreadBlockedInterval(Ljava/lang/Thread;J)V -PLio/embrace/android/embracesdk/internal/anr/EmbraceAnrService;->onThreadBlockedInterval(Ljava/lang/Thread;J)V -HSPLio/embrace/android/embracesdk/internal/anr/EmbraceAnrService;->onThreadUnblocked(Ljava/lang/Thread;J)V -PLio/embrace/android/embracesdk/internal/anr/EmbraceAnrService;->onThreadUnblocked(Ljava/lang/Thread;J)V -HSPLio/embrace/android/embracesdk/internal/anr/EmbraceAnrService;->processAnrTick(J)V -PLio/embrace/android/embracesdk/internal/anr/EmbraceAnrService;->processAnrTick(J)V HSPLio/embrace/android/embracesdk/internal/anr/EmbraceAnrService;->startAnrCapture$lambda$0(Lio/embrace/android/embracesdk/internal/anr/EmbraceAnrService;)V PLio/embrace/android/embracesdk/internal/anr/EmbraceAnrService;->startAnrCapture$lambda$0(Lio/embrace/android/embracesdk/internal/anr/EmbraceAnrService;)V HSPLio/embrace/android/embracesdk/internal/anr/EmbraceAnrService;->startAnrCapture()V @@ -397,12 +366,6 @@ PLio/embrace/android/embracesdk/internal/anr/EmbraceAnrService$Companion;->(Ljava/lang/Thread;)V PLio/embrace/android/embracesdk/internal/anr/ThreadInfoCollector;->(Ljava/lang/Thread;)V -HSPLio/embrace/android/embracesdk/internal/anr/ThreadInfoCollector;->captureSample(Lio/embrace/android/embracesdk/internal/config/ConfigService;)Ljava/util/List; -PLio/embrace/android/embracesdk/internal/anr/ThreadInfoCollector;->captureSample(Lio/embrace/android/embracesdk/internal/config/ConfigService;)Ljava/util/List; -HSPLio/embrace/android/embracesdk/internal/anr/ThreadInfoCollector;->clearStacktraceCache()V -PLio/embrace/android/embracesdk/internal/anr/ThreadInfoCollector;->clearStacktraceCache()V -HSPLio/embrace/android/embracesdk/internal/anr/ThreadInfoCollector;->getAllowedThreads(Lio/embrace/android/embracesdk/internal/config/ConfigService;)Ljava/util/Set; -PLio/embrace/android/embracesdk/internal/anr/ThreadInfoCollector;->getAllowedThreads(Lio/embrace/android/embracesdk/internal/config/ConfigService;)Ljava/util/Set; Lio/embrace/android/embracesdk/internal/anr/detection/BlockedThreadDetector; HSPLio/embrace/android/embracesdk/internal/anr/detection/BlockedThreadDetector;->(Lio/embrace/android/embracesdk/internal/config/ConfigService;Lio/embrace/android/embracesdk/internal/clock/Clock;Lio/embrace/android/embracesdk/internal/anr/BlockedThreadListener;Lio/embrace/android/embracesdk/internal/anr/detection/ThreadMonitoringState;Ljava/lang/Thread;Lio/embrace/android/embracesdk/internal/logging/EmbLogger;)V PLio/embrace/android/embracesdk/internal/anr/detection/BlockedThreadDetector;->(Lio/embrace/android/embracesdk/internal/config/ConfigService;Lio/embrace/android/embracesdk/internal/clock/Clock;Lio/embrace/android/embracesdk/internal/anr/BlockedThreadListener;Lio/embrace/android/embracesdk/internal/anr/detection/ThreadMonitoringState;Ljava/lang/Thread;Lio/embrace/android/embracesdk/internal/logging/EmbLogger;)V @@ -420,8 +383,6 @@ HSPLio/embrace/android/embracesdk/internal/anr/detection/BlockedThreadDetector;- PLio/embrace/android/embracesdk/internal/anr/detection/BlockedThreadDetector;->setConfigService(Lio/embrace/android/embracesdk/internal/config/ConfigService;)V HSPLio/embrace/android/embracesdk/internal/anr/detection/BlockedThreadDetector;->setListener(Lio/embrace/android/embracesdk/internal/anr/BlockedThreadListener;)V PLio/embrace/android/embracesdk/internal/anr/detection/BlockedThreadDetector;->setListener(Lio/embrace/android/embracesdk/internal/anr/BlockedThreadListener;)V -HSPLio/embrace/android/embracesdk/internal/anr/detection/BlockedThreadDetector;->shouldAttemptAnrSample(J)Z -PLio/embrace/android/embracesdk/internal/anr/detection/BlockedThreadDetector;->shouldAttemptAnrSample(J)Z HSPLio/embrace/android/embracesdk/internal/anr/detection/BlockedThreadDetector;->updateAnrTracking(J)V PLio/embrace/android/embracesdk/internal/anr/detection/BlockedThreadDetector;->updateAnrTracking(J)V Lio/embrace/android/embracesdk/internal/anr/detection/LivenessCheckScheduler; @@ -498,12 +459,8 @@ HSPLio/embrace/android/embracesdk/internal/anr/detection/ThreadMonitoringState;- PLio/embrace/android/embracesdk/internal/anr/detection/ThreadMonitoringState;->getLastTargetThreadResponseMs()J HSPLio/embrace/android/embracesdk/internal/anr/detection/ThreadMonitoringState;->resetState()V PLio/embrace/android/embracesdk/internal/anr/detection/ThreadMonitoringState;->resetState()V -HSPLio/embrace/android/embracesdk/internal/anr/detection/ThreadMonitoringState;->setAnrInProgress(Z)V -PLio/embrace/android/embracesdk/internal/anr/detection/ThreadMonitoringState;->setAnrInProgress(Z)V HSPLio/embrace/android/embracesdk/internal/anr/detection/ThreadMonitoringState;->setLastMonitorThreadResponseMs(J)V PLio/embrace/android/embracesdk/internal/anr/detection/ThreadMonitoringState;->setLastMonitorThreadResponseMs(J)V -HSPLio/embrace/android/embracesdk/internal/anr/detection/ThreadMonitoringState;->setLastSampleAttemptMs(J)V -PLio/embrace/android/embracesdk/internal/anr/detection/ThreadMonitoringState;->setLastSampleAttemptMs(J)V HSPLio/embrace/android/embracesdk/internal/anr/detection/ThreadMonitoringState;->setLastTargetThreadResponseMs(J)V PLio/embrace/android/embracesdk/internal/anr/detection/ThreadMonitoringState;->setLastTargetThreadResponseMs(J)V Lio/embrace/android/embracesdk/internal/anr/ndk/EmbraceNativeThreadSamplerService; @@ -1277,6 +1234,8 @@ HSPLio/embrace/android/embracesdk/internal/capture/metadata/EmbraceMetadataServi PLio/embrace/android/embracesdk/internal/capture/metadata/EmbraceMetadataService;->(Lkotlin/Lazy;Lio/embrace/android/embracesdk/internal/envelope/metadata/EnvelopeMetadataSource;Landroid/content/Context;Lkotlin/Lazy;Lio/embrace/android/embracesdk/internal/config/ConfigService;Lio/embrace/android/embracesdk/internal/prefs/PreferencesService;Lio/embrace/android/embracesdk/internal/worker/BackgroundWorker;Lio/embrace/android/embracesdk/internal/clock/Clock;Lio/embrace/android/embracesdk/internal/logging/EmbLogger;)V HSPLio/embrace/android/embracesdk/internal/capture/metadata/EmbraceMetadataService;->access$getPreferencesService$p(Lio/embrace/android/embracesdk/internal/capture/metadata/EmbraceMetadataService;)Lio/embrace/android/embracesdk/internal/prefs/PreferencesService; PLio/embrace/android/embracesdk/internal/capture/metadata/EmbraceMetadataService;->access$getPreferencesService$p(Lio/embrace/android/embracesdk/internal/capture/metadata/EmbraceMetadataService;)Lio/embrace/android/embracesdk/internal/prefs/PreferencesService; +HSPLio/embrace/android/embracesdk/internal/capture/metadata/EmbraceMetadataService;->access$getRes(Lio/embrace/android/embracesdk/internal/capture/metadata/EmbraceMetadataService;)Lio/embrace/android/embracesdk/internal/payload/EnvelopeResource; +PLio/embrace/android/embracesdk/internal/capture/metadata/EmbraceMetadataService;->access$getRes(Lio/embrace/android/embracesdk/internal/capture/metadata/EmbraceMetadataService;)Lio/embrace/android/embracesdk/internal/payload/EnvelopeResource; HSPLio/embrace/android/embracesdk/internal/capture/metadata/EmbraceMetadataService;->getAppInfo()Lio/embrace/android/embracesdk/internal/payload/AppInfo; PLio/embrace/android/embracesdk/internal/capture/metadata/EmbraceMetadataService;->getAppInfo()Lio/embrace/android/embracesdk/internal/payload/AppInfo; HSPLio/embrace/android/embracesdk/internal/capture/metadata/EmbraceMetadataService;->getAppUpdated()Z @@ -2206,8 +2165,8 @@ HSPLio/embrace/android/embracesdk/internal/config/EmbraceConfigService;->addList PLio/embrace/android/embracesdk/internal/config/EmbraceConfigService;->addListener(Lkotlin/jvm/functions/Function0;)V HSPLio/embrace/android/embracesdk/internal/config/EmbraceConfigService;->attemptConfigRefresh()V PLio/embrace/android/embracesdk/internal/config/EmbraceConfigService;->attemptConfigRefresh()V -HPLio/embrace/android/embracesdk/internal/config/EmbraceConfigService;->configRequiresRefresh()Z HSPLio/embrace/android/embracesdk/internal/config/EmbraceConfigService;->configRequiresRefresh()Z +PLio/embrace/android/embracesdk/internal/config/EmbraceConfigService;->configRequiresRefresh()Z HSPLio/embrace/android/embracesdk/internal/config/EmbraceConfigService;->configRetryIsSafe()Z PLio/embrace/android/embracesdk/internal/config/EmbraceConfigService;->configRetryIsSafe()Z HSPLio/embrace/android/embracesdk/internal/config/EmbraceConfigService;->getAnrBehavior()Lio/embrace/android/embracesdk/internal/config/behavior/AnrBehavior; @@ -2407,34 +2366,18 @@ HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->()V HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->(Lio/embrace/android/embracesdk/internal/config/behavior/BehaviorThresholdCheck;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->(Lio/embrace/android/embracesdk/internal/config/behavior/BehaviorThresholdCheck;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V -HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->getAllowPatternList()Ljava/util/List; -PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->getAllowPatternList()Ljava/util/List; -HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->getBlockPatternList()Ljava/util/List; -PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->getBlockPatternList()Ljava/util/List; -HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->getMaxAnrIntervalsPerSession()I -PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->getMaxAnrIntervalsPerSession()I -HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->getMaxStacktracesPerInterval()I -PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->getMaxStacktracesPerInterval()I HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->getMinDuration()I PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->getMinDuration()I -HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->getMinThreadPriority()I -PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->getMinThreadPriority()I HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->getMonitorThreadPriority()I PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->getMonitorThreadPriority()I HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->getSamplingIntervalMs()J PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->getSamplingIntervalMs()J -HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->getStacktraceFrameLimit()I -PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->getStacktraceFrameLimit()I -HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->isAnrCaptureEnabled()Z -PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->isAnrCaptureEnabled()Z HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->isGoogleAnrCaptureEnabled()Z PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->isGoogleAnrCaptureEnabled()Z HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->isIdleHandlerEnabled()Z PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->isIdleHandlerEnabled()Z HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->isNativeThreadAnrSamplingEnabled()Z PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->isNativeThreadAnrSamplingEnabled()Z -HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->shouldCaptureMainThreadOnly()Z -PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;->shouldCaptureMainThreadOnly()Z Lio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl$Companion; HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl$Companion;->()V PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl$Companion;->()V @@ -2443,17 +2386,9 @@ PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl$Compani Lio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl$allowPatternList$2; HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl$allowPatternList$2;->(Lio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;)V PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl$allowPatternList$2;->(Lio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;)V -HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl$allowPatternList$2;->invoke()Ljava/lang/Object; -PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl$allowPatternList$2;->invoke()Ljava/lang/Object; -HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl$allowPatternList$2;->invoke()Ljava/util/List; -PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl$allowPatternList$2;->invoke()Ljava/util/List; Lio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl$blockPatternList$2; HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl$blockPatternList$2;->(Lio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;)V PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl$blockPatternList$2;->(Lio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl;)V -HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl$blockPatternList$2;->invoke()Ljava/lang/Object; -PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl$blockPatternList$2;->invoke()Ljava/lang/Object; -HSPLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl$blockPatternList$2;->invoke()Ljava/util/List; -PLio/embrace/android/embracesdk/internal/config/behavior/AnrBehaviorImpl$blockPatternList$2;->invoke()Ljava/util/List; Lio/embrace/android/embracesdk/internal/config/behavior/AppExitInfoBehavior; Lio/embrace/android/embracesdk/internal/config/behavior/AppExitInfoBehaviorImpl; HSPLio/embrace/android/embracesdk/internal/config/behavior/AppExitInfoBehaviorImpl;->()V @@ -3029,6 +2964,7 @@ HSPLio/embrace/android/embracesdk/internal/config/remote/UiRemoteConfig;-> PLio/embrace/android/embracesdk/internal/config/remote/UiRemoteConfig;->(Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;)V HSPLio/embrace/android/embracesdk/internal/config/remote/UiRemoteConfig;->(Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;ILkotlin/jvm/internal/DefaultConstructorMarker;)V PLio/embrace/android/embracesdk/internal/config/remote/UiRemoteConfig;->(Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/embrace/android/embracesdk/internal/config/remote/UiRemoteConfig;->getFragments()Ljava/lang/Integer; PLio/embrace/android/embracesdk/internal/config/remote/UiRemoteConfig;->getFragments()Ljava/lang/Integer; Lio/embrace/android/embracesdk/internal/config/remote/UiRemoteConfigJsonAdapter; HSPLio/embrace/android/embracesdk/internal/config/remote/UiRemoteConfigJsonAdapter;->(Lcom/squareup/moshi/Moshi;)V @@ -6171,64 +6107,6 @@ PLio/embrace/android/embracesdk/internal/opentelemetry/OpenTelemetrySdk$sdkTrace Lio/embrace/android/embracesdk/internal/opentelemetry/TracerExtKt; HSPLio/embrace/android/embracesdk/internal/opentelemetry/TracerExtKt;->embraceSpanBuilder(Lio/opentelemetry/api/trace/Tracer;Ljava/lang/String;Lio/embrace/android/embracesdk/internal/arch/schema/TelemetryType;ZZLio/embrace/android/embracesdk/spans/EmbraceSpan;)Lio/embrace/android/embracesdk/internal/spans/EmbraceSpanBuilder; PLio/embrace/android/embracesdk/internal/opentelemetry/TracerExtKt;->embraceSpanBuilder(Lio/opentelemetry/api/trace/Tracer;Ljava/lang/String;Lio/embrace/android/embracesdk/internal/arch/schema/TelemetryType;ZZLio/embrace/android/embracesdk/spans/EmbraceSpan;)Lio/embrace/android/embracesdk/internal/spans/EmbraceSpanBuilder; -Lio/embrace/android/embracesdk/internal/payload/AnrInterval; -HSPLio/embrace/android/embracesdk/internal/payload/AnrInterval;->()V -PLio/embrace/android/embracesdk/internal/payload/AnrInterval;->()V -HSPLio/embrace/android/embracesdk/internal/payload/AnrInterval;->(JLjava/lang/Long;Ljava/lang/Long;Lio/embrace/android/embracesdk/internal/payload/AnrInterval$Type;Lio/embrace/android/embracesdk/internal/payload/AnrSampleList;Ljava/lang/Integer;)V -PLio/embrace/android/embracesdk/internal/payload/AnrInterval;->(JLjava/lang/Long;Ljava/lang/Long;Lio/embrace/android/embracesdk/internal/payload/AnrInterval$Type;Lio/embrace/android/embracesdk/internal/payload/AnrSampleList;Ljava/lang/Integer;)V -HSPLio/embrace/android/embracesdk/internal/payload/AnrInterval;->(JLjava/lang/Long;Ljava/lang/Long;Lio/embrace/android/embracesdk/internal/payload/AnrInterval$Type;Lio/embrace/android/embracesdk/internal/payload/AnrSampleList;Ljava/lang/Integer;ILkotlin/jvm/internal/DefaultConstructorMarker;)V -PLio/embrace/android/embracesdk/internal/payload/AnrInterval;->(JLjava/lang/Long;Ljava/lang/Long;Lio/embrace/android/embracesdk/internal/payload/AnrInterval$Type;Lio/embrace/android/embracesdk/internal/payload/AnrSampleList;Ljava/lang/Integer;ILkotlin/jvm/internal/DefaultConstructorMarker;)V -HSPLio/embrace/android/embracesdk/internal/payload/AnrInterval;->getAnrSampleList()Lio/embrace/android/embracesdk/internal/payload/AnrSampleList; -PLio/embrace/android/embracesdk/internal/payload/AnrInterval;->getAnrSampleList()Lio/embrace/android/embracesdk/internal/payload/AnrSampleList; -HSPLio/embrace/android/embracesdk/internal/payload/AnrInterval;->getCode()Ljava/lang/Integer; -PLio/embrace/android/embracesdk/internal/payload/AnrInterval;->getCode()Ljava/lang/Integer; -HSPLio/embrace/android/embracesdk/internal/payload/AnrInterval;->getEndTime()Ljava/lang/Long; -PLio/embrace/android/embracesdk/internal/payload/AnrInterval;->getEndTime()Ljava/lang/Long; -HSPLio/embrace/android/embracesdk/internal/payload/AnrInterval;->getLastKnownTime()Ljava/lang/Long; -PLio/embrace/android/embracesdk/internal/payload/AnrInterval;->getLastKnownTime()Ljava/lang/Long; -HSPLio/embrace/android/embracesdk/internal/payload/AnrInterval;->getStartTime()J -PLio/embrace/android/embracesdk/internal/payload/AnrInterval;->getStartTime()J -HSPLio/embrace/android/embracesdk/internal/payload/AnrInterval;->getType()Lio/embrace/android/embracesdk/internal/payload/AnrInterval$Type; -PLio/embrace/android/embracesdk/internal/payload/AnrInterval;->getType()Lio/embrace/android/embracesdk/internal/payload/AnrInterval$Type; -Lio/embrace/android/embracesdk/internal/payload/AnrInterval$Companion; -HSPLio/embrace/android/embracesdk/internal/payload/AnrInterval$Companion;->()V -PLio/embrace/android/embracesdk/internal/payload/AnrInterval$Companion;->()V -HSPLio/embrace/android/embracesdk/internal/payload/AnrInterval$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V -PLio/embrace/android/embracesdk/internal/payload/AnrInterval$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V -Lio/embrace/android/embracesdk/internal/payload/AnrInterval$Type; -HSPLio/embrace/android/embracesdk/internal/payload/AnrInterval$Type;->$values()[Lio/embrace/android/embracesdk/internal/payload/AnrInterval$Type; -PLio/embrace/android/embracesdk/internal/payload/AnrInterval$Type;->$values()[Lio/embrace/android/embracesdk/internal/payload/AnrInterval$Type; -HSPLio/embrace/android/embracesdk/internal/payload/AnrInterval$Type;->()V -PLio/embrace/android/embracesdk/internal/payload/AnrInterval$Type;->()V -HSPLio/embrace/android/embracesdk/internal/payload/AnrInterval$Type;->(Ljava/lang/String;I)V -PLio/embrace/android/embracesdk/internal/payload/AnrInterval$Type;->(Ljava/lang/String;I)V -Lio/embrace/android/embracesdk/internal/payload/AnrSample; -HSPLio/embrace/android/embracesdk/internal/payload/AnrSample;->()V -PLio/embrace/android/embracesdk/internal/payload/AnrSample;->()V -HSPLio/embrace/android/embracesdk/internal/payload/AnrSample;->(JLjava/util/List;Ljava/lang/Long;Ljava/lang/Integer;)V -PLio/embrace/android/embracesdk/internal/payload/AnrSample;->(JLjava/util/List;Ljava/lang/Long;Ljava/lang/Integer;)V -HSPLio/embrace/android/embracesdk/internal/payload/AnrSample;->(JLjava/util/List;Ljava/lang/Long;Ljava/lang/Integer;ILkotlin/jvm/internal/DefaultConstructorMarker;)V -PLio/embrace/android/embracesdk/internal/payload/AnrSample;->(JLjava/util/List;Ljava/lang/Long;Ljava/lang/Integer;ILkotlin/jvm/internal/DefaultConstructorMarker;)V -HSPLio/embrace/android/embracesdk/internal/payload/AnrSample;->getCode()Ljava/lang/Integer; -PLio/embrace/android/embracesdk/internal/payload/AnrSample;->getCode()Ljava/lang/Integer; -HSPLio/embrace/android/embracesdk/internal/payload/AnrSample;->getSampleOverheadMs()Ljava/lang/Long; -PLio/embrace/android/embracesdk/internal/payload/AnrSample;->getSampleOverheadMs()Ljava/lang/Long; -HSPLio/embrace/android/embracesdk/internal/payload/AnrSample;->getThreads()Ljava/util/List; -PLio/embrace/android/embracesdk/internal/payload/AnrSample;->getThreads()Ljava/util/List; -HSPLio/embrace/android/embracesdk/internal/payload/AnrSample;->getTimestamp()J -PLio/embrace/android/embracesdk/internal/payload/AnrSample;->getTimestamp()J -Lio/embrace/android/embracesdk/internal/payload/AnrSample$Companion; -HSPLio/embrace/android/embracesdk/internal/payload/AnrSample$Companion;->()V -PLio/embrace/android/embracesdk/internal/payload/AnrSample$Companion;->()V -HSPLio/embrace/android/embracesdk/internal/payload/AnrSample$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V -PLio/embrace/android/embracesdk/internal/payload/AnrSample$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V -Lio/embrace/android/embracesdk/internal/payload/AnrSampleList; -HSPLio/embrace/android/embracesdk/internal/payload/AnrSampleList;->(Ljava/util/List;)V -PLio/embrace/android/embracesdk/internal/payload/AnrSampleList;->(Ljava/util/List;)V -HSPLio/embrace/android/embracesdk/internal/payload/AnrSampleList;->copy(Ljava/util/List;)Lio/embrace/android/embracesdk/internal/payload/AnrSampleList; -PLio/embrace/android/embracesdk/internal/payload/AnrSampleList;->copy(Ljava/util/List;)Lio/embrace/android/embracesdk/internal/payload/AnrSampleList; -HSPLio/embrace/android/embracesdk/internal/payload/AnrSampleList;->getSamples()Ljava/util/List; -PLio/embrace/android/embracesdk/internal/payload/AnrSampleList;->getSamples()Ljava/util/List; Lio/embrace/android/embracesdk/internal/payload/AppFramework; HSPLio/embrace/android/embracesdk/internal/payload/AppFramework;->$values()[Lio/embrace/android/embracesdk/internal/payload/AppFramework; PLio/embrace/android/embracesdk/internal/payload/AppFramework;->$values()[Lio/embrace/android/embracesdk/internal/payload/AppFramework; @@ -6660,21 +6538,9 @@ PLio/embrace/android/embracesdk/internal/payload/Span$Status;->(Ljava/lang HSPLio/embrace/android/embracesdk/internal/payload/Span$Status;->values()[Lio/embrace/android/embracesdk/internal/payload/Span$Status; PLio/embrace/android/embracesdk/internal/payload/Span$Status;->values()[Lio/embrace/android/embracesdk/internal/payload/Span$Status; Lio/embrace/android/embracesdk/internal/payload/SpanEvent; -HSPLio/embrace/android/embracesdk/internal/payload/SpanEvent;->(Ljava/lang/String;Ljava/lang/Long;Ljava/util/List;)V -PLio/embrace/android/embracesdk/internal/payload/SpanEvent;->(Ljava/lang/String;Ljava/lang/Long;Ljava/util/List;)V -HSPLio/embrace/android/embracesdk/internal/payload/SpanEvent;->getAttributes()Ljava/util/List; -PLio/embrace/android/embracesdk/internal/payload/SpanEvent;->getAttributes()Ljava/util/List; -HSPLio/embrace/android/embracesdk/internal/payload/SpanEvent;->getName()Ljava/lang/String; -PLio/embrace/android/embracesdk/internal/payload/SpanEvent;->getName()Ljava/lang/String; -HSPLio/embrace/android/embracesdk/internal/payload/SpanEvent;->getTimestampNanos()Ljava/lang/Long; -PLio/embrace/android/embracesdk/internal/payload/SpanEvent;->getTimestampNanos()Ljava/lang/Long; Lio/embrace/android/embracesdk/internal/payload/SpanEventJsonAdapter; HSPLio/embrace/android/embracesdk/internal/payload/SpanEventJsonAdapter;->(Lcom/squareup/moshi/Moshi;)V PLio/embrace/android/embracesdk/internal/payload/SpanEventJsonAdapter;->(Lcom/squareup/moshi/Moshi;)V -HSPLio/embrace/android/embracesdk/internal/payload/SpanEventJsonAdapter;->toJson(Lcom/squareup/moshi/JsonWriter;Lio/embrace/android/embracesdk/internal/payload/SpanEvent;)V -PLio/embrace/android/embracesdk/internal/payload/SpanEventJsonAdapter;->toJson(Lcom/squareup/moshi/JsonWriter;Lio/embrace/android/embracesdk/internal/payload/SpanEvent;)V -HSPLio/embrace/android/embracesdk/internal/payload/SpanEventJsonAdapter;->toJson(Lcom/squareup/moshi/JsonWriter;Ljava/lang/Object;)V -PLio/embrace/android/embracesdk/internal/payload/SpanEventJsonAdapter;->toJson(Lcom/squareup/moshi/JsonWriter;Ljava/lang/Object;)V Lio/embrace/android/embracesdk/internal/payload/SpanJsonAdapter; HSPLio/embrace/android/embracesdk/internal/payload/SpanJsonAdapter;->(Lcom/squareup/moshi/Moshi;)V PLio/embrace/android/embracesdk/internal/payload/SpanJsonAdapter;->(Lcom/squareup/moshi/Moshi;)V @@ -6691,30 +6557,6 @@ Lio/embrace/android/embracesdk/internal/payload/Stacktraces; Lio/embrace/android/embracesdk/internal/payload/StacktracesJsonAdapter; HSPLio/embrace/android/embracesdk/internal/payload/StacktracesJsonAdapter;->(Lcom/squareup/moshi/Moshi;)V PLio/embrace/android/embracesdk/internal/payload/StacktracesJsonAdapter;->(Lcom/squareup/moshi/Moshi;)V -Lio/embrace/android/embracesdk/internal/payload/ThreadInfo; -HSPLio/embrace/android/embracesdk/internal/payload/ThreadInfo;->()V -PLio/embrace/android/embracesdk/internal/payload/ThreadInfo;->()V -HSPLio/embrace/android/embracesdk/internal/payload/ThreadInfo;->(JLjava/lang/Thread$State;Ljava/lang/String;ILjava/util/List;)V -PLio/embrace/android/embracesdk/internal/payload/ThreadInfo;->(JLjava/lang/Thread$State;Ljava/lang/String;ILjava/util/List;)V -HSPLio/embrace/android/embracesdk/internal/payload/ThreadInfo;->equals(Ljava/lang/Object;)Z -PLio/embrace/android/embracesdk/internal/payload/ThreadInfo;->equals(Ljava/lang/Object;)Z -HSPLio/embrace/android/embracesdk/internal/payload/ThreadInfo;->getLines()Ljava/util/List; -PLio/embrace/android/embracesdk/internal/payload/ThreadInfo;->getLines()Ljava/util/List; -HSPLio/embrace/android/embracesdk/internal/payload/ThreadInfo;->getPriority()I -PLio/embrace/android/embracesdk/internal/payload/ThreadInfo;->getPriority()I -HSPLio/embrace/android/embracesdk/internal/payload/ThreadInfo;->getState()Ljava/lang/Thread$State; -PLio/embrace/android/embracesdk/internal/payload/ThreadInfo;->getState()Ljava/lang/Thread$State; -HSPLio/embrace/android/embracesdk/internal/payload/ThreadInfo;->getThreadId()J -PLio/embrace/android/embracesdk/internal/payload/ThreadInfo;->getThreadId()J -HSPLio/embrace/android/embracesdk/internal/payload/ThreadInfo;->hashCode()I -PLio/embrace/android/embracesdk/internal/payload/ThreadInfo;->hashCode()I -Lio/embrace/android/embracesdk/internal/payload/ThreadInfo$Companion; -HSPLio/embrace/android/embracesdk/internal/payload/ThreadInfo$Companion;->()V -PLio/embrace/android/embracesdk/internal/payload/ThreadInfo$Companion;->()V -HSPLio/embrace/android/embracesdk/internal/payload/ThreadInfo$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V -PLio/embrace/android/embracesdk/internal/payload/ThreadInfo$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V -HSPLio/embrace/android/embracesdk/internal/payload/ThreadInfo$Companion;->ofThread(Ljava/lang/Thread;[Ljava/lang/StackTraceElement;I)Lio/embrace/android/embracesdk/internal/payload/ThreadInfo; -PLio/embrace/android/embracesdk/internal/payload/ThreadInfo$Companion;->ofThread(Ljava/lang/Thread;[Ljava/lang/StackTraceElement;I)Lio/embrace/android/embracesdk/internal/payload/ThreadInfo; Lio/embrace/android/embracesdk/internal/payload/UserInfo; HSPLio/embrace/android/embracesdk/internal/payload/UserInfo;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V PLio/embrace/android/embracesdk/internal/payload/UserInfo;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V diff --git a/embrace-test-fakes/src/main/kotlin/io/embrace/android/embracesdk/fakes/FakeAnrIntervals.kt b/embrace-test-fakes/src/main/kotlin/io/embrace/android/embracesdk/fakes/FakeAnrIntervals.kt index a84cb0a4f3..692dd00831 100644 --- a/embrace-test-fakes/src/main/kotlin/io/embrace/android/embracesdk/fakes/FakeAnrIntervals.kt +++ b/embrace-test-fakes/src/main/kotlin/io/embrace/android/embracesdk/fakes/FakeAnrIntervals.kt @@ -11,7 +11,8 @@ val fakeAnrIntervalThreads: List = listOf( Thread.State.BLOCKED, "", 9, - lines = listOf("line1", "line2") + lines = listOf("line1", "line2"), + 2, ) ) diff --git a/embrace-test-fakes/src/main/kotlin/io/embrace/android/embracesdk/fakes/behavior/FakeAnrBehavior.kt b/embrace-test-fakes/src/main/kotlin/io/embrace/android/embracesdk/fakes/behavior/FakeAnrBehavior.kt index 145a34d16e..2d39e16c42 100644 --- a/embrace-test-fakes/src/main/kotlin/io/embrace/android/embracesdk/fakes/behavior/FakeAnrBehavior.kt +++ b/embrace-test-fakes/src/main/kotlin/io/embrace/android/embracesdk/fakes/behavior/FakeAnrBehavior.kt @@ -16,6 +16,7 @@ class FakeAnrBehavior( var monitorThreadPriorityImpl: Int = 5, var sampleIntervalMsImpl: Long = 5, var anrPerSessionImpl: Int = 5, + var frameLimit: Int = 200, override val allowPatternList: List = emptyList(), override val blockPatternList: List = emptyList(), var nativeThreadAnrSamplingAllowlistImpl: List = emptyList(), @@ -31,7 +32,7 @@ class FakeAnrBehavior( override fun getAnrProcessErrorsDelayMs(): Long = 0 override fun getAnrProcessErrorsSchedulerExtraTimeAllowanceMs(): Long = 100 override fun getMaxStacktracesPerInterval(): Int = 80 - override fun getStacktraceFrameLimit(): Int = 256 + override fun getStacktraceFrameLimit(): Int = frameLimit override fun getMaxAnrIntervalsPerSession(): Int = anrPerSessionImpl override fun getMinThreadPriority(): Int = 6 override fun getMinDuration(): Int = 1000