Skip to content

Retry failed accept moves and keep them pending instead of dropping - #719

Merged
SimonCropp merged 1 commit into
mainfrom
keep-failed-accepts-pending
Jul 20, 2026
Merged

Retry failed accept moves and keep them pending instead of dropping#719
SimonCropp merged 1 commit into
mainfrom
keep-failed-accepts-pending

Conversation

@SimonCropp

Copy link
Copy Markdown
Member

Accepting a move races the diff tool teardown: a killed tool releases its file handles asynchronously (and job objects reap children a beat after the direct kill), and a tool killed mid-startup can leave an orphan that only takes its locks after the kill. InnerMove did a single move attempt and a single lock query, and treated "no locker found" as success - silently dropping the move while the target was never updated.

  • Retry the move and lock query for a few seconds; lockers found on any attempt go through the existing prompt/kill flow
  • Never treat an unexplained failure as success: keep the move pending and show a balloon notification
  • Skip the scan round instead of surfacing an error dialog when a tracked file is exclusively locked (FileComparer opens with FileShare.Read and HandleScanMove only tolerated FileNotFoundException)
  • Move the ContainsFiles check inside the try in SafeDeleteDirectory

Accepting a move races the diff tool teardown: a killed tool releases its
file handles asynchronously (and job objects reap children a beat after the
direct kill), and a tool killed mid-startup can leave an orphan that only
takes its locks after the kill. InnerMove did a single move attempt and a
single lock query, and treated "no locker found" as success - silently
dropping the move while the target was never updated.
- Retry the move and lock query for a few seconds; lockers found on any
attempt go through the existing prompt/kill flow
- Never treat an unexplained failure as success: keep the move pending and
show a balloon notification
- Skip the scan round instead of surfacing an error dialog when a tracked
file is exclusively locked (FileComparer opens with FileShare.Read and
HandleScanMove only tolerated FileNotFoundException)
- Move the ContainsFiles check inside the try in SafeDeleteDirectory
@SimonCroppSimonCropp added this to the 19.3.3 milestone Jul 20, 2026
@SimonCropp
SimonCropp merged commit 96e3adc into mainJul 20, 2026
7 checks passed
@SimonCropp
SimonCropp deleted the keep-failed-accepts-pending branch July 20, 2026 02:06
@github-actions
github-actionsBot restored the keep-failed-accepts-pending branch July 20, 2026 03:23
This was referenced Jul 20, 2026
This was referenced Jul 20, 2026
@SimonCropp
SimonCropp deleted the keep-failed-accepts-pending branch August 21, 2026 12:19
Sign up for freeto 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

@SimonCropp