feat: structured telemetry, post-dismiss verify, stale-data indicator, archival warning (#718)#734
Merged
erikdarlingdata merged 15 commits intoerikdarlingdata:devfrom Mar 27, 2026
Conversation
- Parse detail_text to extract Database, Query Text, and Wait Type when using 'Mute This Alert' from alert history (both editions) - Add PopulateFromDetailText() to AlertMuteContext for structured field extraction from the label: value format - Add 'Default expiration for new mute rules' dropdown to Settings in both editions (1 hour, 24 hours, 7 days, Never; default 24h) - MuteRuleDialog now selects the configured default expiration instead of always defaulting to 'Never' - Persist setting as mute_rule_default_expiration in settings.json (Lite) and preferences.json (Dashboard) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The XML doc claimed Job Name extraction but the parser did not implement it. Add the missing branch in both Dashboard and Lite editions so the behavior matches the documentation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Collapse newlines in Truncate/TruncateText so detail_text fields stay single-line in the label: value format - Handle multi-line query values in PopulateFromDetailText by accumulating continuation lines until the next indented field - Recognize variant query labels (Blocked Query, Blocking Query, Victim SQL) in addition to Query Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Explain that the field is a case-insensitive substring match and suggest entering a distinctive fragment like a table or procedure name. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Feature/alert muting part 2
…archival warning Structured telemetry (erikdarlingdata#718 item 7): - Dismiss logging now uses key=value format (Action, Result, Requested, LiveUpdated, ArchivedDismissed, Duration, Cutoff, etc.) - Stopwatch timing on all dismiss operations - Dashboard dismiss handlers now log via Logger with same structured format Post-dismiss verification (erikdarlingdata#718 item 10): - VerifyDismissAsync confirms targeted alerts are actually dismissed - VerifyDismissAllAsync confirms no undismissed rows remain in range - Mismatches logged as warnings for diagnostics Stale-data indicator (erikdarlingdata#718 item 12): - 'Refreshed just now / Xs ago / Xm ago' label in Alert History header - DispatcherTimer updates display every 10 seconds - Added to both Lite and Dashboard editions Archival warning (erikdarlingdata#718 item 8): - ArchiveService.IsArchiving static property set during archival operations - Lite Alert History shows amber warning when archival is in progress - Helps users understand why dismiss may be slower during archival Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
11 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Adds structured telemetry, post-dismiss verification, a stale-data indicator, and an archival warning to the Alert History tab. These are items 7, 8, 10, and 12 from the issue #718 improvement list.
Structured telemetry — Dismiss logging now uses machine-parseable
key=valueformat (e.g.,Action=DismissSelected, Result=Complete, Requested=5, LiveUpdated=3, ArchivedDismissed=2, Duration=45ms) withStopwatchtiming on all dismiss operations. Dashboard dismiss handlers now log viaLoggerwith the same structured format.Post-dismiss verification — After each dismiss operation, a verification query confirms the targeted alerts are actually dismissed.
VerifyDismissAsyncchecks individual alerts;VerifyDismissAllAsyncconfirms no undismissed rows remain in the affected range. Mismatches are logged as warnings for diagnostics.Stale-data indicator — Both Lite and Dashboard Alert History tabs now show a "Refreshed just now / Xs ago / Xm ago" label in the header bar, updated every 10 seconds via
DispatcherTimer. Helps users understand when the displayed data may be out of date.Archival warning —
ArchiveService.IsArchivingstatic property is set during archival operations. Lite's Alert History shows an amber "⚠ Archival in progress" indicator when archival is running, helping users understand why dismiss may be slower during that window.Which component(s) does this affect?
How was this tested?
LocalDataService.AlertHistory.csChecklist
dotnet build -c Debug)