Skip to content

Commit 3932bb5

Browse files
Merge pull request #80 from erikdarlingdata/feature/fix-deadlock-charts
Fix deadlock charts not populating data
2 parents 09b2d84 + b5d8477 commit 3932bb5

4 files changed

Lines changed: 16 additions & 16 deletions

File tree

Dashboard/ServerTab.xaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1122,7 +1122,7 @@
11221122
<RowDefinition Height="Auto"/>
11231123
<RowDefinition Height="*"/>
11241124
</Grid.RowDefinitions>
1125-
<TextBlock Grid.Row="0" Text="Blocking Events (Delta)" FontWeight="Bold" HorizontalAlignment="Center" Margin="0,5"/>
1125+
<TextBlock Grid.Row="0" Text="Blocking Events" FontWeight="Bold" HorizontalAlignment="Center" Margin="0,5"/>
11261126
<ScottPlot:WpfPlot Grid.Row="1" x:Name="BlockingStatsBlockingEventsChart"/>
11271127
</Grid>
11281128
</Border>
@@ -1133,7 +1133,7 @@
11331133
<RowDefinition Height="Auto"/>
11341134
<RowDefinition Height="*"/>
11351135
</Grid.RowDefinitions>
1136-
<TextBlock Grid.Row="0" Text="Blocking Duration (Delta ms)" FontWeight="Bold" HorizontalAlignment="Center" Margin="0,5"/>
1136+
<TextBlock Grid.Row="0" Text="Blocking Duration (ms)" FontWeight="Bold" HorizontalAlignment="Center" Margin="0,5"/>
11371137
<ScottPlot:WpfPlot Grid.Row="1" x:Name="BlockingStatsDurationChart"/>
11381138
</Grid>
11391139
</Border>
@@ -1144,7 +1144,7 @@
11441144
<RowDefinition Height="Auto"/>
11451145
<RowDefinition Height="*"/>
11461146
</Grid.RowDefinitions>
1147-
<TextBlock Grid.Row="0" Text="Deadlock Count (Delta)" FontWeight="Bold" HorizontalAlignment="Center" Margin="0,5"/>
1147+
<TextBlock Grid.Row="0" Text="Deadlock Count" FontWeight="Bold" HorizontalAlignment="Center" Margin="0,5"/>
11481148
<ScottPlot:WpfPlot Grid.Row="1" x:Name="BlockingStatsDeadlocksChart"/>
11491149
</Grid>
11501150
</Border>
@@ -1155,7 +1155,7 @@
11551155
<RowDefinition Height="Auto"/>
11561156
<RowDefinition Height="*"/>
11571157
</Grid.RowDefinitions>
1158-
<TextBlock Grid.Row="0" Text="Deadlock Wait Time (Delta ms)" FontWeight="Bold" HorizontalAlignment="Center" Margin="0,5"/>
1158+
<TextBlock Grid.Row="0" Text="Deadlock Wait Time (ms)" FontWeight="Bold" HorizontalAlignment="Center" Margin="0,5"/>
11591159
<ScottPlot:WpfPlot Grid.Row="1" x:Name="BlockingStatsDeadlockWaitTimeChart"/>
11601160
</Grid>
11611161
</Border>

Dashboard/ServerTab.xaml.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1661,13 +1661,13 @@ private void LoadBlockingStatsCharts(List<BlockingDeadlockStatsItem> data, int h
16611661
var orderedData = data?.OrderBy(d => d.CollectionTime).ToList() ?? new List<BlockingDeadlockStatsItem>();
16621662

16631663
// Get all unique time points for consistent X-axis across all charts
1664-
// Blocking Events Delta Chart
1664+
// Blocking Events Chart (raw per-interval count, not delta)
16651665
BlockingStatsBlockingEventsChart.Plot.Clear();
16661666
_blockingEventsHover?.Clear();
16671667
ApplyDarkModeToChart(BlockingStatsBlockingEventsChart);
16681668
var (blockingXs, blockingYs) = TabHelpers.FillTimeSeriesGaps(
16691669
orderedData.Select(d => d.CollectionTime),
1670-
orderedData.Select(d => (double)d.BlockingEventCountDelta));
1670+
orderedData.Select(d => (double)d.BlockingEventCount));
16711671
if (blockingXs.Length > 0)
16721672
{
16731673
var scatter = BlockingStatsBlockingEventsChart.Plot.Add.Scatter(blockingXs, blockingYs);
@@ -1691,13 +1691,13 @@ private void LoadBlockingStatsCharts(List<BlockingDeadlockStatsItem> data, int h
16911691
LockChartVerticalAxis(BlockingStatsBlockingEventsChart);
16921692
BlockingStatsBlockingEventsChart.Refresh();
16931693

1694-
// Blocking Duration Delta Chart
1694+
// Blocking Duration Chart (raw per-interval total, not delta)
16951695
BlockingStatsDurationChart.Plot.Clear();
16961696
_blockingDurationHover?.Clear();
16971697
ApplyDarkModeToChart(BlockingStatsDurationChart);
16981698
var (durationXs, durationYs) = TabHelpers.FillTimeSeriesGaps(
16991699
orderedData.Select(d => d.CollectionTime),
1700-
orderedData.Select(d => (double)d.TotalBlockingDurationMsDelta));
1700+
orderedData.Select(d => (double)d.TotalBlockingDurationMs));
17011701
if (durationXs.Length > 0)
17021702
{
17031703
var scatter = BlockingStatsDurationChart.Plot.Add.Scatter(durationXs, durationYs);
@@ -1721,13 +1721,13 @@ private void LoadBlockingStatsCharts(List<BlockingDeadlockStatsItem> data, int h
17211721
LockChartVerticalAxis(BlockingStatsDurationChart);
17221722
BlockingStatsDurationChart.Refresh();
17231723

1724-
// Deadlock Count Delta Chart
1724+
// Deadlock Count Chart (raw per-interval count, not delta)
17251725
BlockingStatsDeadlocksChart.Plot.Clear();
17261726
_deadlocksHover?.Clear();
17271727
ApplyDarkModeToChart(BlockingStatsDeadlocksChart);
17281728
var (deadlockXs, deadlockYs) = TabHelpers.FillTimeSeriesGaps(
17291729
orderedData.Select(d => d.CollectionTime),
1730-
orderedData.Select(d => (double)d.DeadlockCountDelta));
1730+
orderedData.Select(d => (double)d.DeadlockCount));
17311731
if (deadlockXs.Length > 0)
17321732
{
17331733
var scatter = BlockingStatsDeadlocksChart.Plot.Add.Scatter(deadlockXs, deadlockYs);
@@ -1751,13 +1751,13 @@ private void LoadBlockingStatsCharts(List<BlockingDeadlockStatsItem> data, int h
17511751
LockChartVerticalAxis(BlockingStatsDeadlocksChart);
17521752
BlockingStatsDeadlocksChart.Refresh();
17531753

1754-
// Deadlock Wait Time Chart
1754+
// Deadlock Wait Time Chart (raw per-interval total, not delta)
17551755
BlockingStatsDeadlockWaitTimeChart.Plot.Clear();
17561756
_deadlockWaitTimeHover?.Clear();
17571757
ApplyDarkModeToChart(BlockingStatsDeadlockWaitTimeChart);
17581758
var (deadlockWaitXs, deadlockWaitYs) = TabHelpers.FillTimeSeriesGaps(
17591759
orderedData.Select(d => d.CollectionTime),
1760-
orderedData.Select(d => (double)d.TotalDeadlockWaitTimeMsDelta));
1760+
orderedData.Select(d => (double)d.TotalDeadlockWaitTimeMs));
17611761
if (deadlockWaitXs.Length > 0)
17621762
{
17631763
var scatter = BlockingStatsDeadlockWaitTimeChart.Plot.Add.Scatter(deadlockWaitXs, deadlockWaitYs);

install/25_process_deadlock_xml.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ BEGIN
129129
BEGIN
130130
SELECT
131131
@start_date = MIN(dx.event_time),
132-
@end_date = MAX(dx.event_time)
132+
@end_date = DATEADD(SECOND, 1, MAX(dx.event_time))
133133
FROM collect.deadlock_xml AS dx
134134
WHERE dx.is_processed = 0
135135
AND dx.event_time IS NOT NULL

install/26_blocking_deadlock_analyzer.sql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ BEGIN
102102

103103
RAISERROR(N'Aggregating blocking and deadlock events from the last %d hour(s)', 0, 1, @lookback_hours) WITH NOWAIT;
104104
RAISERROR(N'Blocking: counting events from %s', 0, 1, @blocking_range) WITH NOWAIT;
105-
RAISERROR(N'Deadlock: counting events from %s (interval-based)', 0, 1, @deadlock_range) WITH NOWAIT;
105+
RAISERROR(N'Deadlock: counting events collected from %s (by collection_time)', 0, 1, @deadlock_range) WITH NOWAIT;
106106
END;
107107

108108
/*
@@ -188,8 +188,8 @@ BEGIN
188188
total_deadlock_wait_time_ms = SUM(bl.wait_time),
189189
victim_count = SUM(CASE WHEN bl.deadlock_group LIKE N'%- VICTIM' THEN 1 ELSE 0 END)
190190
FROM collect.deadlocks AS bl
191-
WHERE bl.event_date >= @last_deadlock_collection
192-
AND bl.event_date < @start_time
191+
WHERE bl.collection_time >= @last_deadlock_collection
192+
AND bl.collection_time < @start_time
193193
GROUP BY
194194
bl.database_name
195195
)

0 commit comments

Comments
 (0)