Skip to content

Conversation

@seongjinyoon
Copy link
Contributor

Description:

Implemented restriction on export result to prevent users from exporting workflow results that depend on non-downloadable datasets they don't own. This ensures dataset download cannot be circumvented through workflow execution and result export.

Closes #3766

Changes:

Backend

  • Added server-side validation to analyze workflow dependencies and block export of operators that depend on non-downloadable datasets
  • Implemented algorithm to propagate restrictions to downstream operators

Frontend

  • Updated export dialog component to show restriction warnings, filter exportable operators, and display blocking dataset
    information

Video:

The video demonstrates how export result behaves on:

  • workflows with downloadable datasets
  • workflows with non-downloadable datasets
  • workflows with both downloadable and non-downloadable datasets
Screen.Recording.2025-09-26.at.12.27.38.AM.mov

@Copilot Copilot AI review requested due to automatic review settings September 26, 2025 07:50
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This pull request implements a feature to prevent export of workflow results that depend on non-downloadable datasets the user doesn't own, ensuring dataset access controls cannot be bypassed through workflow execution and result export.

  • Adds server-side validation to analyze workflow dependencies and prevent export of operators dependent on restricted datasets
  • Implements frontend UI changes to show restriction warnings and filter exportable operators
  • Uses dataset ownership and downloadable flags to determine export eligibility with propagation to downstream operators

Reviewed Changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.

File Description
workflow-result-export.service.ts Adds dataset metadata tracking, restriction analysis, and export filtering logic
result-exportation.component.ts Updates export dialog to handle restricted operators and display warnings
result-exportation.component.html Adds UI alerts for partial and complete export restrictions
WorkflowExecutionsResource.scala Implements server-side validation to block export of restricted operators

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@seongjinyoon
Copy link
Contributor Author

@chenlica @aglinxinyuan

@aglinxinyuan
Copy link
Contributor

@aicam and @bobbai00 can review this PR.

@chenlica chenlica removed the request for review from aicam September 27, 2025 00:38
@chenlica
Copy link
Contributor

I removed @aicam from the reviewer list.

@bobbai00 and @kunwp1 : please review this PR.

@chenlica chenlica self-requested a review September 27, 2025 00:41
Copy link
Contributor

@kunwp1 kunwp1 left a comment

Choose a reason for hiding this comment

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

@seongjinyoon Can you add comments on top of each class and function so that reviewers can easily understand the code? Thanks!

@chenlica
Copy link
Contributor

@kunwp1 After you approve this PR, please let @bobbai00 know so that he can review it.

Copy link
Contributor

@kunwp1 kunwp1 left a comment

Choose a reason for hiding this comment

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

I left a few comments. Some of them may be wrong. Please check.

Copy link
Contributor

@kunwp1 kunwp1 left a comment

Choose a reason for hiding this comment

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

I left a few more comments! @bobbai00 Please review the PR after @seongjinyoon resolves the comments.

@seongjinyoon
Copy link
Contributor Author

I have addressed all comments. @bobbai00 please take a look.

Copy link
Contributor

@bobbai00 bobbai00 left a comment

Choose a reason for hiding this comment

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

Left some comments on the frontend code.

@github-actions github-actions bot added feature engine frontend Changes related to the frontend GUI backend Anything related to backend services labels Oct 3, 2025
@github-actions github-actions bot removed the backend Anything related to backend services label Oct 5, 2025
@seongjinyoon
Copy link
Contributor Author

@bobbai00 Please review the code.

Copy link
Contributor

@bobbai00 bobbai00 left a comment

Choose a reason for hiding this comment

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

Left some comments

@seongjinyoon
Copy link
Contributor Author

@bobbai00 Please review the code.

Copy link
Contributor

@bobbai00 bobbai00 left a comment

Choose a reason for hiding this comment

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

Its in good shape now. Left few minor comments. Please let me know once you resolved them, and I will take another look

@chenlica chenlica removed their request for review October 10, 2025 03:22
@chenlica
Copy link
Contributor

I removed myself from the reviewer list. We rely on other members to do the reviews. Feel free to merge the PR after all reviewers approved it.

Seongjin Yoon and others added 2 commits October 10, 2025 09:47
Signed-off-by: Seongjin Yoon <75426413+seongjinyoon@users.noreply.github.com>
Copy link
Contributor

@bobbai00 bobbai00 left a comment

Choose a reason for hiding this comment

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

LGTM!

@kunwp1 kunwp1 merged commit 4d3c788 into apache:main Oct 10, 2025
11 checks passed
@seongjinyoon seongjinyoon deleted the feat/prevent-export-result branch October 10, 2025 22:26
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.

Datasets that are disabled for download can be downloaded through exporting result in workflows.

5 participants