Skip to content

perf: Add per-workflow /versions API with lazy UI version loading#1019

Draft
akhilpathivada wants to merge 1 commit intoconductor-oss:mainfrom
akhilpathivada:feature/lazy-workflow-versions
Draft

perf: Add per-workflow /versions API with lazy UI version loading#1019
akhilpathivada wants to merge 1 commit intoconductor-oss:mainfrom
akhilpathivada:feature/lazy-workflow-versions

Conversation

@akhilpathivada
Copy link
Copy Markdown
Contributor

Resolves #1014

Summary

  • Adds GET /metadata/workflow/{name}/versions endpoint returning lightweight
    version summaries (version number + createTime) without deserializing full
    workflow definition JSON bodies
  • Rewires UI version dropdowns (FormikVersionDropdown, WorkflowDefinition,
    SaveWorkflowDialog) to fetch versions lazily when a workflow is selected,
    instead of loading all ~600K version summaries on every page load
  • Adds loading state indicator on version dropdown during fetch

Motivation

At 200K+ workflow definitions, the existing
/names-and-versions endpoint loads all version summaries upfront on every
page load. This PR fetches only the 3-5 versions needed for the selected
workflow, on demand.

Test plan

  • MetadataServiceTest.testGetWorkflowVersions — unit test (mocked DAO)
  • PostgresMetadataDAOTest.testGetWorkflowVersions — integration test (Testcontainers)
  • MetadataResourceTest.testGetWorkflowVersions — REST controller test
  • Cypress intercept added for /metadata/workflow/*/versions
  • Manual: Open Workbench, select a workflow name, verify version dropdown
    loads lazily with loading indicator

Signed-off-by: akhilpathivada <akhil.pathivada.21@gmail.com>
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.

[PERF] Optimize Workflow Name dropdowns to avoid loading full definitions at scale

1 participant