Skip to content

Perf: Dashboard timer re-entrancy guards + installed-version cache (P3)#1115

Merged
erikdarlingdata merged 1 commit into
devfrom
feature/perf-dashboard-timers
Jun 12, 2026
Merged

Perf: Dashboard timer re-entrancy guards + installed-version cache (P3)#1115
erikdarlingdata merged 1 commit into
devfrom
feature/perf-dashboard-timers

Conversation

@erikdarlingdata

Copy link
Copy Markdown
Owner

Dashboard timer/throttle fixes (P3).

  • Re-entrancy guards on the three async void DispatcherTimer ticks (LandingPage NOC refresh, MainWindow connection-status, MainWindow alert check). At the 10s minimum interval a slow server makes a tick outlast its interval, so ticks overlapped and stacked unbounded refresh/alert sweeps, each opening its own connections.
  • Installed-version cache: CheckConnectionAsync no longer re-runs the installation_history query every connection-check tick — the version can't change mid-session, so it's carried forward once known.

Build: Dashboard clean (net10); Dashboard.Tests 482/482.

Flagged (your call): the NOC Refresh Interval setting is dead — the NOC timer uses AutoRefreshIntervalSeconds, not NocRefreshIntervalSeconds. Wire it vs remove the setting+UI is a product decision. The per-tick new DatabaseService per server remains, but with the guards ticks no longer overlap so it no longer stacks connections.

🤖 Generated with Claude Code

- Add an in-flight guard to the three async-void DispatcherTimer ticks
  (LandingPage NOC refresh, MainWindow connection-status, MainWindow alert check).
  At the 10s minimum interval a slow server (10s command timeouts, 5s connect
  retries) makes a tick outlast its interval, so ticks overlapped and stacked
  unbounded refresh/alert sweeps, each opening its own connections.
- ServerManager.CheckConnectionAsync no longer re-runs the installation_history
  version query on every connection-check tick — the installed monitor version
  can't change mid-session, so it's carried forward once known.

Build: Dashboard builds clean (net10); Dashboard.Tests 482/482.

Flagged (not in this PR): the "NOC Refresh Interval" setting is dead — the NOC
timer uses AutoRefreshIntervalSeconds, not NocRefreshIntervalSeconds. Wiring it vs
removing the setting+UI is a product decision (your call). The per-tick
`new DatabaseService(...)` per server remains, but with the guards ticks no longer
overlap, so it no longer stacks connections.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@erikdarlingdata erikdarlingdata merged commit 89b8067 into dev Jun 12, 2026
@erikdarlingdata erikdarlingdata deleted the feature/perf-dashboard-timers branch June 12, 2026 03:09
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