Repository navigation
Scope the de-skew's accuracy claim where the column outlives a DST transition #3229
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -31,6 +31,14 @@ namespace PerformanceMonitor.Darling.Service.Mcp; | |
| /// exists to answer — the tool's own description sends a caller here "when ADR cleanup looks stuck" — so a | ||
| /// phantom four-hour stall is the worst place for an unmarked frame. The trend read needs nothing: it | ||
| /// returns only <c>collection_time</c>.</para> | ||
| /// | ||
| /// <para><b>Exact only inside the current DST period.</b> The collected offset is the one in force at | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same parity gap as the |
||
| /// collection time, so a cleaner timestamp from before the most recent transition is de-skewed by an | ||
| /// offset that was not in force when it was written and lands 60 minutes early. The off-row cleaner runs | ||
| /// continuously and is unaffected in practice, but <c>aborted_version_cleaner_*</c> can reach back weeks | ||
| /// on a quiet database — a live read showed 2026-08-26 against a 2026-09-09 snapshot — so it can cross a | ||
| /// transition. Same limit and same proper fix as <c>DarlingObjectStatsReader</c> records: a collected zone | ||
| /// plus <c>AT TIME ZONE</c>, rather than one offset applied to every age of value.</para> | ||
| /// </summary> | ||
| internal static class DarlingPvsReader | ||
| { | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lite/Parity: this same DST-exactness caveat applies to Lite, and Lite's description isn't updated.
Lite/Mcp/McpObjectStatsTools.cscomputeslast_user_accesswith the identical pattern:GetServerUtcOffsetMinutesAsyncreads the latestutc_offset_minutes(itselfDATEDIFF(MINUTE, GETUTCDATE(), GETDATE())at collection time — same single-current-value offset as Darling'sserver_properties.utc_offset_minutes), then applies it viar.LastUserAccess?.AddMinutes(-utcOffsetMinutes)against a DMV column that persists since the last instance restart. That's the exact scenario this PR documents as being 60 minutes off across a DST transition — but Lite's tool description (McpObjectStatsTools.cs:57) just says "this read de-skews them" with no scope caveat.Since this PR is intentionally scoped to documenting rather than fixing, should the same caveat be added to Lite's description (or a follow-up issue opened) so the two apps don't drift on a documented-vs-undocumented known limitation?