ci(e2e): retry the API-29 emulator boot to absorb the android-emulator-runner keyevent race #217

Closed
opened 2026-07-03 15:21:37 +00:00 by JMR-dev · 0 comments
JMR-dev commented 2026-07-03 15:21:37 +00:00 (Migrated from github.com)

Source: API-29 E2E flake investigation.

The matrix E2E (29) job intermittently fails (~2%, API-29 only) in reactivecircus/android-emulator-runner's post-boot adb shell input keyevent 82 with ServiceManager$ServiceNotFoundException: No service published for: input: on snapshot resume sys.boot_completed=1 is restored before system_server republishes its binder services, and that keyevent is un-guarded and fatal, so the job aborts before Gradle runs (fast-fail ~1m43s). Proven on run 28667366203 (PR #209). NOT the historical Gradle-download timeout and NOT a test failure.

This ticket (quick unblock): make the "Run E2E tests" step (.github/workflows/ci.yml:193-202) tolerant of the boot race — add id: + continue-on-error: true, then a guarded second reactivecircus/android-emulator-runner attempt (if: steps.<id>.outcome == 'failure'). Two independent boots drop the ~2% race to ~0.04%. No matrix / androidTest changes. The definitive fix (converge on the e2e-preview manual-boot pattern) is tracked as a separate follow-up.

**Source:** API-29 E2E flake investigation. The matrix `E2E (29)` job intermittently fails (~2%, API-29 only) in `reactivecircus/android-emulator-runner`'s post-boot `adb shell input keyevent 82` with `ServiceManager$ServiceNotFoundException: No service published for: input`: on snapshot resume `sys.boot_completed=1` is restored before `system_server` republishes its binder services, and that keyevent is **un-guarded and fatal**, so the job aborts before Gradle runs (fast-fail ~1m43s). Proven on run 28667366203 (PR #209). NOT the historical Gradle-download timeout and NOT a test failure. **This ticket (quick unblock):** make the "Run E2E tests" step (`.github/workflows/ci.yml:193-202`) tolerant of the boot race — add `id:` + `continue-on-error: true`, then a guarded second `reactivecircus/android-emulator-runner` attempt (`if: steps.<id>.outcome == 'failure'`). Two independent boots drop the ~2% race to ~0.04%. No matrix / androidTest changes. The definitive fix (converge on the `e2e-preview` manual-boot pattern) is tracked as a separate follow-up.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: JMR-dev/LibreMail#217