Skip to content

Add DiffRunner.SettleDelete to withdraw a pending delete - #876

Merged
SimonCropp merged 1 commit into
mainfrom
settle-delete
Sep 22, 2026
Merged

SimonCropp merged 1 commit into
mainfrom
settle-delete

Conversation

@SimonCropp

Copy link
Copy Markdown
Member

A delete is raised for a file that looked stale, and waits in the tray or the viewer for someone to accept it. Nothing could withdraw one when the file came back into use - a target that came back, or a snapshot that moved inline and then back to its file - so accepting it removed a file a passing test depends on. The owners already drop a tracked delete on a settle for its key; there was just no way for a test run to send one.

SettleDelete sends that settle to the queue owner, as SettleDiff does for a pending move. It reaches the delete in a viewer, and in a tray that owns the queue, which keeps the deletes that arrived over the piper port in the same tracked files. Nothing is deleted. It answers to DiffRunner.Disabled, and nothing owning the queue is silent, with the unowned port remembered like every other settle.

A tray that does not own the queue keeps its own deletes and cannot be reached, the same limit SettleDiff has: the piper format is frozen at moves and deletes.

Pinned at each end. The client sends the tracked delete key, sends nothing while disabled, and is silent with no owner. A tray that owns the queue drops the delete it tracked from the raw path when the settle names the folded key, and leaves the file on disk. The viewer's session drops the delete and keeps the rest of the queue.

A delete is raised for a file that looked stale, and waits in the tray or
the viewer for someone to accept it. Nothing could withdraw one when the
file came back into use - a target that came back, or a snapshot that
moved inline and then back to its file - so accepting it removed a file a
passing test depends on. The owners already drop a tracked delete on a
settle for its key; there was just no way for a test run to send one.

SettleDelete sends that settle to the queue owner, as SettleDiff does for a
pending move. It reaches the delete in a viewer, and in a tray that owns
the queue, which keeps the deletes that arrived over the piper port in the
same tracked files. Nothing is deleted. It answers to DiffRunner.Disabled,
and nothing owning the queue is silent, with the unowned port remembered
like every other settle.

A tray that does not own the queue keeps its own deletes and cannot be
reached, the same limit SettleDiff has: the piper format is frozen at moves
and deletes.

Pinned at each end. The client sends the tracked delete key, sends nothing
while disabled, and is silent with no owner. A tray that owns the queue
drops the delete it tracked from the raw path when the settle names the
folded key, and leaves the file on disk. The viewer's session drops the
delete and keeps the rest of the queue.
@SimonCropp SimonCropp added this to the 20.4.0 milestone Sep 22, 2026
@SimonCropp
SimonCropp merged commit 6eead8c into main Sep 22, 2026
10 checks passed
@SimonCropp
SimonCropp deleted the settle-delete branch September 22, 2026 20:46
This was referenced Sep 22, 2026
This was referenced Sep 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant