Skip to content

feat: visualize profile execution graphs - #4043

Draft
Ragnaroos wants to merge 2 commits into
apache:masterfrom
Ragnaroos:codex/profile-execution-graph
Draft

feat: visualize profile execution graphs#4043
Ragnaroos wants to merge 2 commits into
apache:masterfrom
Ragnaroos:codex/profile-execution-graph

Conversation

@Ragnaroos

Copy link
Copy Markdown
Contributor

What changed

  • Add an Execution graph result tab alongside the existing AI analysis.
  • Render the complete Profile DAG with read-only React Flow controls and ELK bottom-to-top layout.
  • Keep every Fragment visible so cross-Fragment exchange and multicast flows remain observable.
  • Show Pipeline badges, execution/wait heat, operator timing, row counts, memory metrics, and PlanInfo details.
  • Integrate the independent DAG lifecycle with job polling, refresh recovery, retry handling, and stable unavailable/failed states.
  • Add bounded runtime validation for the DAG response, including a dedicated 5 MiB response limit and graph cardinality limits.
  • Accept signed internal plan/destination IDs used by Doris local exchange and multicast operators.

Why

Profile DAG parsing usually completes before the AI diagnosis. Showing the deterministic execution graph immediately gives users useful structure while the longer analysis continues, without allowing graph editing or exposing raw HTML.

The signed-ID validation also fixes a real response being rejected even though the backend returned HTTP 200: Doris may use negative internal IDs for local exchange and multicast relationships. A later job poll could then overwrite the client failure with an endless Laying out the execution graph… state; terminal DAG client failures are now preserved.

Validation

  • node --test src/components/profile-analysis/*.test.js — 68 tests passed.
  • Targeted TypeScript check for the changed API and state modules passed.
  • git diff --check passed.
  • A real 75 KB DAG response with 7 Fragments, 27 Pipelines, 61 nodes, and 62 edges passed frontend validation and completed ELK layout.

Local environment note

The full-repository tsc --noEmit run exhausted the local Node heap even when raised to 8 GiB while traversing the website project; it emitted no TypeScript diagnostic before the OOM. Targeted checks and all Profile Analysis tests passed.

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