Skip to content

feat(frontend): add sort by execution time with nulls last#5890

Open
roshiiiz wants to merge 7 commits into
apache:mainfrom
roshiiiz:feat/workflow-sort-execution-time
Open

feat(frontend): add sort by execution time with nulls last#5890
roshiiiz wants to merge 7 commits into
apache:mainfrom
roshiiiz:feat/workflow-sort-execution-time

Conversation

@roshiiiz

Copy link
Copy Markdown

What changes were proposed in this PR?

This PR adds the ability to sort workflows by "Execution Time" on the main Dashboard, and ensures that workflows which have never been executed (where execution time is null) are pushed to the bottom of the list rather than awkwardly floating at the top.

Changes made:

  • Added "Execution time" as an option in the frontend sort dropdown menu (sort-method.ts, sort-button.component).
  • Updated UnifiedResourceSchema.scala in the backend to include resourceExecutionTimeField.
  • Updated DashboardResource.scala and WorkflowSearchQueryBuilder.scala to handle the new sort condition, specifically appending .nullsLast() so that un-executed workflows drop to the bottom of the list.

Any related issues, documentation, discussions?

Issue#3406

How was this PR tested?

Tested manually in a local development environment:

  1. Booted the local dashboard and backend via sbt.
  2. Created a new, unexecuted "Untitled Workflow".
  3. Navigated to the Dashboard and sorted by "Execution Time".
  4. Verified that the unexecuted workflow correctly fell to the bottom of the list instead of appearing at the top.

Was this PR authored or co-authored using generative AI tooling?

Generated-by: Antigravity (DeepMind)

@github-actions

Copy link
Copy Markdown
Contributor

👋 Thanks for your first contribution to Texera, @roshiiiz!

If you're looking for a good place to start, browse issues labeled starter-task; they're scoped to be approachable for newcomers.

You can drive common housekeeping yourself by commenting one of these commands on its own line:

  • Issues. Comment /take to assign an open issue to yourself, or /untake to release it. You can find unclaimed work with the search filter is:issue is:open no:assignee.
  • Sub-issues. To link issues into a parent/child hierarchy, comment /sub-issue #5166 #5222 on the parent to attach those children (or /unsub-issue #5166 #5222 to detach them). From a child issue, comment /parent-issue #5166 to set its parent, or /unparent-issue to clear it (the current parent is detected automatically). References may be written as #5166 or as a bare 5166; cross-repository references are not supported.
  • Pull requests (author only). Comment /request-review @user to request a review from someone, or /unrequest-review @user to withdraw that request.

Each command must match exactly: /take this will not work, only /take does. For the full contribution flow, see CONTRIBUTING.md.

@github-actions github-actions Bot added feature engine frontend Changes related to the frontend GUI labels Jun 22, 2026
@github-actions

github-actions Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Automated Reviewer Suggestions

Based on the git blame history of the changed files, we recommend the following reviewers:

  • Contributors with relevant context: @aglinxinyuan, @xuang7, @carloea2
    You can notify them by mentioning @aglinxinyuan, @xuang7, @carloea2 in a comment.

@roshiiiz roshiiiz changed the title feat(dashboard): add sort by execution time with nulls last feat(frontend): add sort by execution time with nulls last Jun 22, 2026
@roshiiiz

Copy link
Copy Markdown
Author

/request-review @xuang7

@github-actions github-actions Bot requested a review from xuang7 June 22, 2026 15:47
@codecov-commenter

codecov-commenter commented Jun 23, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 53.92%. Comparing base (a0154d5) to head (768ae27).
⚠️ Report is 7 commits behind head on main.

Additional details and impacted files
@@             Coverage Diff              @@
##               main    #5890      +/-   ##
============================================
- Coverage     54.42%   53.92%   -0.50%     
+ Complexity     2896     2753     -143     
============================================
  Files          1107     1103       -4     
  Lines         42768    42638     -130     
  Branches       4599     4588      -11     
============================================
- Hits          23277    22994     -283     
- Misses        18134    18313     +179     
+ Partials       1357     1331      -26     
Flag Coverage Δ *Carryforward flag
access-control-service 70.44% <ø> (ø) Carriedforward from 5882434
agent-service 34.36% <ø> (ø) Carriedforward from 5882434
amber 55.18% <ø> (-1.16%) ⬇️ Carriedforward from 5882434
computing-unit-managing-service 1.65% <ø> (ø) Carriedforward from 5882434
config-service 56.06% <ø> (-1.30%) ⬇️ Carriedforward from 5882434
file-service 57.36% <ø> (-1.24%) ⬇️ Carriedforward from 5882434
frontend 48.30% <100.00%> (+0.05%) ⬆️
pyamber 90.09% <ø> (-0.11%) ⬇️ Carriedforward from 5882434
python 90.76% <ø> (ø) Carriedforward from 5882434
workflow-compiling-service 58.69% <ø> (ø) Carriedforward from 5882434

*This pull request uses carry forward flags. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

github-actions Bot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

⚠️ Benchmark changes need a look

🟢 2 better · 🔴 2 worse · ⚪ 11 noise (<±5%) · 0 without baseline

Compared against main a0154d5 benchmarked on this same runner, so the delta is largely free of cross-runner hardware noise. The "7d avg" column still reflects the gh-pages dashboard. Treat <±5% as noise unless repeated.

Dashboard · Run

config throughput MB/s latency max Δ latest / 7d
🔴 bs=10 sw=10 sl=64 366 0.223 24,593/44,440/44,440 us 🔴 +7.7% / 🔴 +27.0%
🔴 bs=100 sw=10 sl=64 775 0.473 131,227/147,240/147,240 us 🟢 -11.1% / 🔴 +16.9%
bs=1000 sw=10 sl=64 925 0.565 1,081,746/1,145,592/1,145,592 us ⚪ within ±5% / 🔴 +12.0%
Baseline details

Latest main a0154d5 from same runner

config metric PR latest main 7d avg Δ latest Δ 7d
bs=10 sw=10 sl=64 throughput 366 tuples/sec 374 tuples/sec 410.82 tuples/sec -2.1% -10.9%
bs=10 sw=10 sl=64 MB/s 0.223 MB/s 0.228 MB/s 0.251 MB/s -2.2% -11.1%
bs=10 sw=10 sl=64 p50 24,593 us 22,830 us 23,785 us +7.7% +3.4%
bs=10 sw=10 sl=64 p95 44,440 us 43,011 us 34,980 us +3.3% +27.0%
bs=10 sw=10 sl=64 p99 44,440 us 43,011 us 34,980 us +3.3% +27.0%
bs=100 sw=10 sl=64 throughput 775 tuples/sec 809 tuples/sec 891.94 tuples/sec -4.2% -13.1%
bs=100 sw=10 sl=64 MB/s 0.473 MB/s 0.494 MB/s 0.544 MB/s -4.3% -13.1%
bs=100 sw=10 sl=64 p50 131,227 us 119,611 us 112,277 us +9.7% +16.9%
bs=100 sw=10 sl=64 p95 147,240 us 165,671 us 139,802 us -11.1% +5.3%
bs=100 sw=10 sl=64 p99 147,240 us 165,671 us 139,802 us -11.1% +5.3%
bs=1000 sw=10 sl=64 throughput 925 tuples/sec 921 tuples/sec 1,041 tuples/sec +0.4% -11.1%
bs=1000 sw=10 sl=64 MB/s 0.565 MB/s 0.562 MB/s 0.635 MB/s +0.5% -11.1%
bs=1000 sw=10 sl=64 p50 1,081,746 us 1,085,044 us 972,714 us -0.3% +11.2%
bs=1000 sw=10 sl=64 p95 1,145,592 us 1,128,883 us 1,023,057 us +1.5% +12.0%
bs=1000 sw=10 sl=64 p99 1,145,592 us 1,128,883 us 1,023,057 us +1.5% +12.0%
Raw CSV
config_idx,batch_size,schema_width,string_len,num_batches,total_ms,total_tuples,total_bytes,tuples_per_sec,mb_per_sec,lat_p50_us,lat_p95_us,lat_p99_us
0,10,10,64,20,547.18,200,128000,366,0.223,24593.08,44440.10,44440.10
1,100,10,64,20,2581.97,2000,1280000,775,0.473,131227.23,147240.11,147240.11
2,1000,10,64,20,21617.33,20000,12800000,925,0.565,1081746.47,1145592.12,1145592.12

@xuang7 xuang7 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR! Overall, this looks good to me and tested locally. One small thing: frontend/junit.xml seems to have been accidentally committed. Could you remove it? Also, we can consider adjusting the order of the sort options. This option might fit better with the other "By ..." options instead of being placed after all the other options.

Image

@roshiiiz

Copy link
Copy Markdown
Author

@xuang7
Thanks for the review! I've updated the PR with those changes:

  1. Removed frontend/junit.xml from tracking.
  2. Reordered the sort options so "By Execution Time" sits right under "By Create Time".
    Let me know if there's anything else!

@xuang7 xuang7 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

engine feature frontend Changes related to the frontend GUI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants