Repository navigation
Fix two Windows CI timing failures: outline landing wait, and unlaid chunks the freeze sweep skipped - #200
Merged
Conversation
The outline tests' landed check skipped the arrival the outline itself waits for: a glide can apply its scroll after the navigation commits. On a slow runner a test read the reading line at the old offset (0 against a destination of 36) and failed "the fixture's tail brings Findings to the reading line", seen on Windows CI on 29 Sep and 11 Oct. Delaying scroll_relative by 0.6 s reproduces it every time; with the wait it passes.
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
The post-fill freeze sweep settles first, but that settle can time out on
a loaded runner. The just-filled chunks then have height 0, freeze refuses
each one, and nothing retried: the chunks stayed live and no capture was
kept, so a requery rebuilt them. On Windows CI this timed out
test_a_requery_serves_the_unmatched_chunks_and_builds_the_matched_one
("the first query's sweep never captured the far chunk"); a no-op settle
reproduces it, 47 of 47 refusals at height 0.
A sweep that met unlaid chunks now comes back for them in the background,
up to 20 times 0.1 s apart, so no navigation waits on it. Each sweep
cancels a pending retry and bumps a generation, so the newest window wins.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
test_a_heading_inside_a_chunk_the_scroll_cannot_reach_keeps_the_cursorfailed on Windows CI (29 Sep on two dependabot PRs, 11 Oct on Give every example and test one made-up person, in everyday words #196):the fixture's tail brings Findings to the reading line,assert 1 == 2._landedhelper skipped the arrival check the outline's own_landedmakes (fnd/tui/outline_view.py): a glide can apply its scroll after the navigation commits, so a slow runner read the reading line at the old offset.Change
_landedintests/test_outline_pane.pyalso waits until the scroller reacheslanding_destination(), as the outline does.Evidence
scroll_relativeby 0.6 s (the mechanismtest_a_jump_whose_scroll_starts_late_still_places_only_its_targetinjects) reproduces the CI failure every time: offset 0 against a destination of 36,assert 1 == 2.Second Windows failure: a freeze sweep that met unlaid chunks never came back
test_a_requery_serves_the_unmatched_chunks_and_builds_the_matched_onetimed out on Windows (10 Oct on a dependabot branch, 11 Oct here):the first query's sweep never captured the far chunk. The diag heldmount served=0 built=60but nobackfill froze=: the post-fill freeze sweep froze nothing.await_settledcan time out or run out of rounds on a loaded runner. The just-filled chunks then have height 0,freezerightly refuses each one, and nothing retried. The chunks stayed live (the DOM the freeze exists to drop), and a requery rebuilt them instead of reusing captures.await_settleda no-op: 47 of 47 refusals at height 0, and the CI timeout.fnd/tui/preview/presenter.py): a sweep that met chunks not yet laid out comes back for them in the background (FREEZE_UNLAID_RETRIES = 20,FREEZE_UNLAID_RETRY_SECONDS = 0.1), so no navigation waits on it. Each sweep cancels a pending retry and bumps a generation, so the newest window always wins; app exit cancels it.tests/test_a_freeze_sweep_returns_for_unlaid_chunks.pyinjects the no-op settle: fails without the fix (and with retries set to 0), passes with it. The 22 files touching freeze and captures: 412 passed.