Skip to content

test(e2e): intermittent J-PLAY-11 playback checkpoint timeout #421

Closed

Description

@chhoumann

J-PLAY-11 intermittently times out before restarting Obsidian because it does not observe a playback checkpoint of at least 5 seconds within its 20-second wait.

Observed while validating PR #415 at 441eef3a949273e1b42072ff74c860643e4c79a8, after merging master 3d7cc6e. The V-415 playback-window correction passed its rewind mutation proof; this failure is at a different checkpoint wait.

Reproduction and results

Headless Linux, Node v22.23.2, the isolated podnotes-test-e2e-hardening vault, Obsidian 1.14.4 from the official user-local install. Run TMPDIR=/data/home/tmp/podnotes-qa2 fnm exec --using 22 -- npm run test:e2e. The runner explicitly selects its CLI; the run also set OBSIDIAN_BIN=/usr/bin/false to check that selection.

The failing test is tests/e2e/journey-playback.test.ts:198. After seeding Journey Playback and starting Long Listen, it waits for library.progress(...).seconds >= 5 on disk. It failed with:

a playback checkpoint of at least 5 s on disk (data.json never matched): WaitForTimeoutError: Timed out waiting for condition after 20000ms.

Evidence and hypothesis

Logs, mutation proof, failure capture, state snapshots and hashes. The failed run is run-1.14.4-retry.log; its captured state is in remaining-flake/.

At capture time, podnotes-data.json has Journey Playback::Long Listen with time: 15.064597, duration: 60, and finished: false. The screenshot shows about 19 seconds in the player. Both runtime errors and console messages are empty. The local feed was http://podnotes.test:44271/playback/feed.xml, with a 60-second WAV at /playback/1.wav.

Hypothesis, not established: checkpoint scheduling or the poll deadline races with a late disk write. PlayerController samples checkpoints at its throttle interval; DataFileWriter waits 10 seconds after the most recent save and can reschedule when another save starts. The successful checkpoint in the post-timeout snapshot is consistent with a late write, but the capture cannot establish exactly when it landed. Instrument the sampled disk values and writer timing before changing the timeout or persistence behavior.

No additional fix or rerun was attempted, per the coordinator's stopping rule. The instance was stopped and the cleanup dry-run reported no owned PIDs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions