Repository navigation
Description
Feature Summary
Texera already collects rich per-operator statistics during (and after) a workflow run: processing time, idle time, input/output row counts and byte sizes, and worker counts. Today these are only readable one operator at a time, so there is no at-a-glance way to see where the time and data actually went.
This is an umbrella issue to add a toggleable, canvas-level heat-map overlay that colors operators cold -> hot by runtime performance, turning the statistics Texera already produces into an immediate visual answer to "what is my bottleneck?". It is a read-only consumer of existing data and requires no backend changes. Follow-up from the RFC discussion in #5216.
- Toggle a "Performance" heat-map layer on the canvas, alongside the existing Grid / Regions / Workers layers
- Color every operator cold -> hot by a normalized performance score
- Switch between three views: Runtime, Throughput, and I/O imbalance
- Read an on-canvas legend showing the cold -> hot scale and the active view
- See colors update live as statistics stream in during a run
- Keep the heat-map after a page refresh, including for an already-finished run, without having to re-execute the workflow
Proposed Solution or Design
A read-only frontend feature driven by WorkflowStatusService as the single source of truth. The execution engine already streams every metric needed over the websocket, and a historical-stats API already exists for restoring a finished run after refresh, so there are no backend changes.
Heat-map Views
| View | Answers | Derived from |
|---|---|---|
| Runtime | Which operator burns the time? | data + control processing time |
| Throughput | Which operator moves the rows? | output row count |
| I/O imbalance | Which operator over/under-feeds? | output-to-input row ratio |
Key Behaviors
- Modeled on the existing toggleable canvas layers (Grid / Regions / Workers)
- Single source of truth: all metrics, live and historical, flow through
WorkflowStatusService- no parallel service - No visual conflict: the heat-map colors only the operator body fill, while the existing execution-status indicator (operator border) is left untouched
- Normalized scoring with skew handling, so one dominant operator does not flatten the rest of the scale
- Restores the last execution's statistics on load via the existing runtime-statistics API, gated on the overlay being enabled
Sub-tasks
Delivered as three sequential sub-issues, to be created and linked under this umbrella issue:
- Capture all per-operator performance metrics in
WorkflowStatusService(no UI) - Add the toggleable heat-map overlay layer with the three views and legend
- Persist the toggle/view and restore the last run's statistics after refresh
Out of Scope
Rule-based hints, structural rewrite suggestions, and downloadable reports from the original RFC prototype are intentionally deferred to future discussion.
Affected Area
Workflow UI
Activity
PG1204 commentedon Jun 18, 2026
/sub-issue #5773
PG1204 commentedon Jun 18, 2026
/sub-issue #5774
PG1204 commentedon Jun 18, 2026
/sub-issue #5775
PG1204 commentedon Jun 23, 2026
/sub-issue #5919
PG1204 commentedon Jun 24, 2026
/take
feat(frontend): capture per-operator performance metrics (apache#5834)
PG1204 commentedon Aug 10, 2026
/sub-issue #7491
feat(frontend): add toggleable performance heat-map overlay (apache#6213
refactor(frontend): split operator state from statistics (apache#8301)
PG1204 commentedon Sep 18, 2026
/sub-issue #8594
feat(frontend): restore the heat-map after a page refresh (apache#8552)
test(frontend): cover the heat-map overlay wiring in the editor (apac…