You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix reconnect send race after WS grace recovery under saturated macOS CI
load: assign mocha-remote client before connection emit, single server-side
pull-coverage, non-throwing Server.send, and Jet retry on No client connected.
Regenerate yarn.lock after patch updates; document in okf-bundle.
Copy file name to clipboardExpand all lines: okf-bundle/ci-workflows/android.md
+25Lines changed: 25 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -42,6 +42,31 @@ Full inventory: [detox-patches.md](detox-patches.md).
42
42
43
43
**Orchestration retry:**`firebase.test.js` still retries on `RETRYABLE_DISCONNECT`; attempt 2 can pass all tests even when attempt 1's teardown logged adb noise.
44
44
45
+
## CI failure: Jet JSON / WS protocol desync (Unexpected end of JSON input)
46
+
47
+
Observed on Android CI under load (e.g. [run 28044822049](https://github.com/invertase/react-native-firebase/actions/runs/28044822049)): Jet runs only ~24 tests before the mocha-remote transport desyncs — often after a transient 1006 under high `loadavg`.
48
+
49
+
**Symptom**
50
+
51
+
```
52
+
[🟥] Unexpected end of JSON input
53
+
[mocha-remote-ws] parse_buffering ...
54
+
```
55
+
56
+
**Cause** — TCP/WebSocket chunks can split JSON frames; under I/O pressure, partial reads are more common. Unbuffered `JSON.parse` on each chunk corrupts the protocol stream.
**Patch workflow reminder** — after editing `tests/node_modules/jet` or `mocha-remote-*`, run `yarn patch-commit`**and**`yarn install` from repo root so `yarn.lock` patch hashes update. CI applies patches from the lockfile, not live `node_modules` edits.
Related non-Detox patches: `jet`, `mocha-remote-client`, `mocha-remote-server` — WS reconnect grace, coverage handshake (`coverage-ready` / `pull-coverage`), client keepalive. See [coverage design](../testing/coverage-design.md) and [iOS CI — issues 6–8](ios.md#6-jet-websocket-disconnect-1006--1001).
20
+
Related non-Detox patches: `jet`, `mocha-remote-client`, `mocha-remote-server` — WS reconnect grace, coverage handshake (`coverage-ready` / `pull-coverage`), client keepalive, server/client parse buffering, reconnect client assignment order. See [coverage design](../testing/coverage-design.md) and [iOS CI — issues 6–8](ios.md#6-jet-websocket-disconnect-1006--1001).
21
21
22
22
## Device registry lock (`ECOMPROMISED`)
23
23
@@ -92,7 +92,7 @@ SRC=tests/node_modules/detox
92
92
yarn patch-commit -s "$PATCH_DIR"# non-interactive when using /bin/cp -f, not plain cp
93
93
```
94
94
95
-
3.`yarn install` from repo root and confirm the change in `tests/node_modules/detox/...`.
95
+
3.`yarn install` from repo root and confirm the change in `tests/node_modules/...`**and** updated `yarn.lock` patch resolution hashes.
96
96
4. Update this doc and platform pages (`ios.md`, `android.md`) if behaviour or file list changes.
97
97
98
98
**Detox version bump:** change `tests/package.json`, run `yarn`, re-apply all hunks (or redo the headless flow from a fresh `yarn patch`), run iOS + Android E2E.
0 commit comments