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
@SimonCropp SimonCropp added this to the 19.3.3 milestone Jul 20, 2026
@SimonCropp
SimonCropp merged commit 96e3adc into main Jul 20, 2026
7 checks passed
@SimonCropp
SimonCropp deleted the keep-failed-accepts-pending branch July 20, 2026 02:06
@github-actions
github-actions Bot restored the keep-failed-accepts-pending branch July 20, 2026 03:23
This was referenced Jul 20, 2026
This was referenced Jul 20, 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