Skip to content

Fix Lite duplicate deadlock and blocked process events (#61)#65

Merged
erikdarlingdata merged 3 commits intodevfrom
feature/61-fix-lite-duplicate-events
Feb 16, 2026
Merged

Fix Lite duplicate deadlock and blocked process events (#61)#65
erikdarlingdata merged 3 commits intodevfrom
feature/61-fix-lite-duplicate-events

Conversation

@erikdarlingdata
Copy link
Owner

Summary

  • Deadlock and blocked process collectors query the XE ring buffer every ~1 minute, but the buffer holds ~10 minutes of events, causing the same event to be inserted ~10x
  • Both collectors now query MAX(timestamp) from DuckDB before each collection cycle and pass it as a @cutoff_time SQL parameter so SQL Server only returns events newer than what we already have
  • Falls back to a 10-minute window on first run or if DuckDB query fails
  • Cleaned up 85 duplicate deadlocks and 12 duplicate blocked process reports from existing data

Closes #61

Test plan

  • Lite builds with 0 errors, 0 warnings
  • Existing duplicates cleaned from DuckDB (1446 → 1361 deadlocks, 69 → 57 blocked process reports)
  • Verified 0 duplicates after cleanup
  • App launches and collects without errors

🤖 Generated with Claude Code

erikdarlingdata and others added 3 commits February 16, 2026 08:41
…ide (#52, #56-59)

New alert types for both Dashboard and Lite: Long-Running Queries,
Poison Waits, TempDB Space, Long-Running Jobs — each with configurable
thresholds in Settings, email notifications, tray toasts, and auto-clear
when conditions resolve.

Alerts History view aggregates all alerts across servers in a timeline
with severity-colored rows, time range and server filters, column-level
filtering, copy/export context menu, and dismiss/hide functionality.

Dashboard persists alert history to JSON on exit and reloads on startup.
Alerts are hidden (not deleted) when dismissed, surviving across sessions.
Lite stores alerts in DuckDB with a dismissed column (schema v9 migration).

Both apps auto-refresh the alerts view when visible and support
multi-select dismiss and bulk dismiss-all with confirmation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Deadlock and blocked process XML processors now check whether
sp_BlitzLock / sp_HumanEventsBlockViewer actually produced parsed
results. If 0 results are returned, rows stay unprocessed for
automatic retry on the next run instead of being silently marked
done. Logs NO_RESULTS status with descriptive error message.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ke sure something works, and then you get so excited about it working that you just sit there marveling at it working and then forget to put it back? It me.

Fix Lite deadlock and blocked process collectors inserting duplicate rows (#61). Both collectors query the XE ring buffer every minute but the buffer holds ~10 minutes of events, so each event was inserted ~10 times. Now each collector queries MAX(timestamp) from DuckDB before collection and passes it as a SQL Server parameter to filter out already-collected events. Falls back to a 10-minute window on first run.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@erikdarlingdata erikdarlingdata merged commit ed5e6cc into dev Feb 16, 2026
1 check passed
@erikdarlingdata erikdarlingdata deleted the feature/61-fix-lite-duplicate-events branch February 20, 2026 13:20
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.

1 participant