Commit df5f050
fix(replay): Dispatch session-deadline stop off the replay worker thread (DART-323)
When a session replay reaches its duration deadline, the stop was invoked
inline from the replay worker thread inside the frame-processing task. Because
ReplayExecutorService.submit() runs tasks synchronously when already on that
thread, stop() encoded the final segment and deleted the replay cache while
holding the replay lifecycle lock. A foreground start() on the main thread then
parked on that lock long enough to trigger a background ANR.
Dispatch the deadline stop through options.executorService so the segment
encoding is enqueued asynchronously and the lifecycle lock is only held for the
fast state transition, matching the existing timer-executor stop path.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 4670d89 commit df5f050
2 files changed
Lines changed: 39 additions & 1 deletion
File tree
- sentry-android-replay/src
- main/java/io/sentry/android/replay/capture
- test/java/io/sentry/android/replay/capture
Lines changed: 7 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
13 | 14 | | |
14 | 15 | | |
15 | 16 | | |
| |||
134 | 135 | | |
135 | 136 | | |
136 | 137 | | |
137 | | - | |
138 | 138 | | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
139 | 145 | | |
140 | 146 | | |
141 | 147 | | |
| |||
sentry-android-replay/src/test/java/io/sentry/android/replay/capture/SessionCaptureStrategyTest.kt
Lines changed: 32 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| 32 | + | |
| 33 | + | |
32 | 34 | | |
33 | 35 | | |
34 | 36 | | |
| |||
66 | 68 | | |
67 | 69 | | |
68 | 70 | | |
| 71 | + | |
69 | 72 | | |
70 | 73 | | |
71 | 74 | | |
| |||
291 | 294 | | |
292 | 295 | | |
293 | 296 | | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
294 | 326 | | |
295 | 327 | | |
296 | 328 | | |
| |||
0 commit comments