Skip to content

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

Merged
Yicong-Huang merged 13 commits into
apache:mainfrom
roshiiiz:feat/workflow-sort-execution-time
Jun 30, 2026
Merged

feat(frontend): add sort by execution time with nulls last#5890
Yicong-Huang merged 13 commits into
apache:mainfrom
roshiiiz:feat/workflow-sort-execution-time

Conversation

@roshiiiz

@roshiiiz roshiiiz commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

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?

Closes #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)

pull 5890

@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
Contributor 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

❌ Patch coverage is 79.16667% with 5 lines in your changes missing coverage. Please review.
✅ Project coverage is 56.78%. Comparing base (3f87773) to head (fc4bc87).

Files with missing lines Patch % Lines
...era/web/resource/dashboard/DashboardResource.scala 28.57% 1 Missing and 4 partials ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##               main    #5890      +/-   ##
============================================
- Coverage     56.81%   56.78%   -0.04%     
+ Complexity     3024     3009      -15     
============================================
  Files          1126     1125       -1     
  Lines         43702    43653      -49     
  Branches       4733     4728       -5     
============================================
- Hits          24831    24789      -42     
+ Misses        17398    17393       -5     
+ Partials       1473     1471       -2     
Flag Coverage Δ *Carryforward flag
access-control-service 70.00% <ø> (ø) Carriedforward from ce23c01
agent-service 44.59% <ø> (ø) Carriedforward from ce23c01
amber 58.61% <70.58%> (+0.01%) ⬆️
computing-unit-managing-service 0.00% <ø> (ø) Carriedforward from ce23c01
config-service 51.56% <ø> (-0.75%) ⬇️ Carriedforward from ce23c01
file-service 59.02% <ø> (-3.80%) ⬇️ Carriedforward from ce23c01
frontend 50.01% <100.00%> (+0.01%) ⬆️
notebook-migration-service 78.57% <ø> (ø) Carriedforward from ce23c01
pyamber 90.20% <ø> (ø) Carriedforward from ce23c01
python 90.76% <ø> (ø) Carriedforward from ce23c01
workflow-compiling-service 55.14% <ø> (ø) Carriedforward from ce23c01

*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

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

Compared against main 3f87773 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 396 0.242 25,348/32,882/32,882 us 🔴 -7.5% / 🔴 +118.2%
🔴 bs=100 sw=10 sl=64 774 0.473 123,961/161,421/161,421 us 🔴 +18.2% / 🔴 +48.3%
bs=1000 sw=10 sl=64 916 0.559 1,085,420/1,163,065/1,163,065 us ⚪ within ±5% / 🔴 +11.5%
Baseline details

Latest main 3f87773 from same runner

config metric PR latest main 7d avg Δ latest Δ 7d
bs=10 sw=10 sl=64 throughput 396 tuples/sec 428 tuples/sec 770.82 tuples/sec -7.5% -48.6%
bs=10 sw=10 sl=64 MB/s 0.242 MB/s 0.261 MB/s 0.47 MB/s -7.3% -48.6%
bs=10 sw=10 sl=64 p50 25,348 us 23,858 us 12,723 us +6.2% +99.2%
bs=10 sw=10 sl=64 p95 32,882 us 31,078 us 15,070 us +5.8% +118.2%
bs=10 sw=10 sl=64 p99 32,882 us 31,078 us 18,429 us +5.8% +78.4%
bs=100 sw=10 sl=64 throughput 774 tuples/sec 822 tuples/sec 973.75 tuples/sec -5.8% -20.5%
bs=100 sw=10 sl=64 MB/s 0.473 MB/s 0.502 MB/s 0.594 MB/s -5.8% -20.4%
bs=100 sw=10 sl=64 p50 123,961 us 121,064 us 102,519 us +2.4% +20.9%
bs=100 sw=10 sl=64 p95 161,421 us 136,615 us 108,855 us +18.2% +48.3%
bs=100 sw=10 sl=64 p99 161,421 us 136,615 us 117,788 us +18.2% +37.0%
bs=1000 sw=10 sl=64 throughput 916 tuples/sec 922 tuples/sec 1,004 tuples/sec -0.7% -8.8%
bs=1000 sw=10 sl=64 MB/s 0.559 MB/s 0.563 MB/s 0.613 MB/s -0.7% -8.8%
bs=1000 sw=10 sl=64 p50 1,085,420 us 1,083,160 us 1,001,930 us +0.2% +8.3%
bs=1000 sw=10 sl=64 p95 1,163,065 us 1,116,567 us 1,042,923 us +4.2% +11.5%
bs=1000 sw=10 sl=64 p99 1,163,065 us 1,116,567 us 1,074,893 us +4.2% +8.2%
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,504.94,200,128000,396,0.242,25348.42,32882.03,32882.03
1,100,10,64,20,2583.43,2000,1280000,774,0.473,123960.88,161420.92,161420.92
2,1000,10,64,20,21834.86,20000,12800000,916,0.559,1085419.56,1163065.34,1163065.34

@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
Contributor 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!

@Yicong-Huang

Copy link
Copy Markdown
Contributor

Hi @roshiiiz as this is a frontend feature, can you include a gif/screenshot in the PR description? Thanks

@roshiiiz

Copy link
Copy Markdown
Contributor Author

Hi @roshiiiz as this is a frontend feature, can you include a gif/screenshot in the PR description? Thanks

@Yicong-Huang Done, Kindly review it

@xuang7 xuang7 enabled auto-merge June 29, 2026 17:55
@xuang7 xuang7 disabled auto-merge June 29, 2026 18:03
@xuang7

xuang7 commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Hi @roshiiiz, scalafmtCheck failed. Please let me know once the PR is ready to merge. Thanks!

@github-actions github-actions Bot added the ddl-change Changes to the TexeraDB DDL label Jun 29, 2026
@xuang7

xuang7 commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Hi @roshiiiz, the database change does not relevant to this PR. Could you please remove it?

@roshiiiz

Copy link
Copy Markdown
Contributor Author

Hi @roshiiiz, the database change does not relevant to this PR. Could you please remove it?

yes removing it rightnow, it was failing a check

@roshiiiz roshiiiz force-pushed the feat/workflow-sort-execution-time branch from 5a2556c to 2fc11ac Compare June 29, 2026 23:19
@github-actions github-actions Bot removed the ddl-change Changes to the TexeraDB DDL label Jun 29, 2026
@roshiiiz

Copy link
Copy Markdown
Contributor Author

@xuang7 it keeps failing this one check, is it important?
image

@Yicong-Huang Yicong-Huang added this pull request to the merge queue Jun 30, 2026
@github-merge-queue github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jun 30, 2026
@Yicong-Huang Yicong-Huang added this pull request to the merge queue Jun 30, 2026
@github-merge-queue github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jun 30, 2026
@Yicong-Huang Yicong-Huang added this pull request to the merge queue Jun 30, 2026
Merged via the queue into apache:main with commit 6534176 Jun 30, 2026
20 checks passed
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.

Need the Option to Sort By Last Execution Time in Workflows List

4 participants