Repository navigation
feat(chart): cancel the read a gesture left behind - #104
Merged
Merged
Conversation
A drag queries the history of every window it passes. When the gesture ended, a read for a window the operator had already left ran on to its end, up to the command timeout, and held the next read behind it. A window whose apply threw could not be asked for again. The history token now runs from IDataProvider.QueryHistoryAsync to the Npgsql reads. A paced request during a drag never cancels, so the strip fills while it moves; the trailing request at the end of a gesture cancels the read for any other window, and a cancelled read reports nothing. The cancel goes through CancelAsync, so Npgsql's blocking cancel request never runs on the UI thread or under the debouncer's or Rx's locks. The chart is the one owner of the window drawn: a gesture that ends inside it reads nothing and still cancels the read it left, and a read for an older pen set opens nothing. A window whose apply threw is read again at the next move. Two gaps on the same read path are closed too: a window starting before the archive's first sample no longer rereads every throttle period, and a pen added with older rows reads them once the archive extent widens. Claude-Session: https://claude.ai/code/session_01PfZJa7neMMKPzycFR6iuhD
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
A drag queries the history of every window it passes. When the gesture ended, a read for a window the operator had already left ran on to its end, up to the 300 s command timeout, and held the next read behind it. A window whose apply threw could not be asked for again.
What changed
Group E (Tasks 9 and 10) of
docs/plans/20260929-window-per-process.md.IDataProvider.QueryHistoryAsyncto the Npgsql reads.CancelAsync, so Npgsql's blocking cancel request (up to the 15 s connect timeout) never runs on the UI thread or under the debouncer's or Rx's locks.master.data-integration.mdstates this trade-off.The plan stays in
docs/plans/; Groups F and G follow.Verification
dotnet test SemiPlot.slnx: 1580 unit and 138 integration tests pass.AReadCancelledMidStatementThrowsInsteadOfFailingcancels a read held by a table lock on the Raw and Minute layers.Per-task commits before collapse
https://claude.ai/code/session_01PfZJa7neMMKPzycFR6iuhD