Skip to main content

Stratora v2.1.7 -- Topology Auto-Gen & Dashboard Self-Heal

· 4 min read
Stratora Team

Stratora v2.1.7 fixes a regression in the auto-generated site dashboard: the Network Topology panel on every site's dashboard now renders its map correctly on fresh deploys, on new sites, and on sites where the panel was previously stuck showing "No map selected." No migration required -- existing dashboards repair themselves on the next read.

What was broken

Since the v2.1.3 sprint that introduced auto-generated site dashboards alongside auto-generated topology maps, a race condition could leave a dashboard's "Network Topology" panel with an empty mapId. The panel would render "No map selected" forever, even though the site's topology map existed and was fully populated.

Three root causes combined to cause this:

  • The fresh-install code path (BootstrapDefaultSite, invoked by the MSI's PostInstall) created the Default Site but bypassed the hooks that invoke SiteDashboardService and TopologyAutoGenService. Startup-time regeneration patched over the dashboard creation, but the topology map generation was gated on "site has ≥1 node" -- and the Default Site had zero nodes at install time.
  • When the first node was later added, the dashboard-regen and topology-map-regen hooks fired as sibling goroutines with no ordering. The dashboard goroutine would usually win the race, read GetAutoGeneratedMapForSite as nil, and persist an empty mapId on the topology panel. The map was then created a moment later -- but no further dashboard regen was triggered, so the panel kept its empty mapId indefinitely.
  • Dashboards that got caught in this race had no way to self-correct. Customers had to manually re-trigger a regen (by adding/removing a node) to get the map linked.

The four fixes

1. BootstrapDefaultSite fires the auto-gen hooks. Fresh installs now follow the same code path as any other site creation. The Default Site gets its dashboard immediately and its topology map as soon as the first node arrives.

2. Topology regeneration runs before dashboard regeneration. The race is gone. Every site/node hook call site now wraps both services in a single goroutine that runs topology-first, dashboard-second. The dashboard's mapId lookup always sees the fresh map.

3. Dashboard read path self-heals empty mapId values. Any site auto-dashboard that was persisted with an empty mapId will render correctly on the next read: the dashboard response is populated with the live auto-map ID at serve time, without writing back to the database. The next normal regeneration event persists the fix. Customers don't need to do anything -- the panel just starts working again.

4. Auto-generated topology map IDs are now deterministic. The map ID is derived from the site ID via UUID v5. If the auto-map row is ever deleted and regenerated, the new row receives the same ID -- so any dashboard that was carrying the old map ID reference still resolves correctly instead of becoming a dangling pointer.

Operator note

The deterministic-ID behavior in fix #4 is intentional. Hard-deleting a topology_maps row (for example, to force a clean layout regeneration) used to produce a new random UUID; in v2.1.7 it produces the same UUID as before. Dashboards referencing the old ID continue to work, which is the win, but operators who were relying on delete-to-get-fresh-ID should instead edit the map in the Map Editor.

Bundled components

No Agent or Collector changes shipped in this release. The Server MSI embeds the unchanged Agent 2.1.6 (Windows), Agent 1.2.1 (Linux), and Collector 2.1.6 components, preserving the validated in-place upgrade path introduced in v2.1.6.


For installation and upgrade instructions, visit docs.stratora.io. The MSI is available on the v2.1.7 release page.