Skip to content

Conversation

@potatoqualitee
Copy link
Member

This fixes issue #9233 where Restore-DbaDbSnapshot occasionally fails with deadlock errors when restoring multiple databases in parallel.

Root Cause

The deadlock occurs when:

  1. One process executes RESTORE DATABASE (holds locks on master)
  2. Another process calls Get-DbaDbSnapshot (queries system tables in master)

Solution

Implemented retry logic with exponential backoff:

  • Detects deadlock errors (SQL error 1205)
  • Retries up to 3 times with 2^n second delays (2s, 4s, 8s)
  • Logs retry attempts at verbose level
  • Preserves original error handling for non-deadlock errors

Fixes #9233

Generated with Claude Code

github-actions bot and others added 2 commits October 31, 2025 12:48
This fixes issue #9233 where Restore-DbaDbSnapshot occasionally fails with
deadlock errors when restoring multiple databases in parallel.

The deadlock occurs when:
1. One process executes RESTORE DATABASE (holds locks on master)
2. Another process calls Get-DbaDbSnapshot (queries system tables in master)

The fix implements retry logic with exponential backoff:
- Detects deadlock errors (SQL error 1205)
- Retries up to 3 times with 2^n second delays (2s, 4s, 8s)
- Logs retry attempts at verbose level
- Preserves original error handling for non-deadlock errors

Co-authored-by: Chrissy LeMaire <[email protected]>
@potatoqualitee potatoqualitee merged commit 674deb1 into development Nov 1, 2025
14 checks passed
@potatoqualitee potatoqualitee deleted the claude/issue-9233-20251031-1246 branch November 1, 2025 17:59
@potatoqualitee
Copy link
Member Author

LGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Restore-DbaDbSnapshot fails due to deadlock

1 participant