The GitHub Actions job "Required Checks" on texera.git/main has succeeded.
Run started by GitHub user github-merge-queue[bot] (triggered by 
github-merge-queue[bot]).

Head commit for run:
3488d37034acb70664c6554dd1bea792ad9590a3 / yangzhang75 <[email protected]>
fix(workflow): a plain save no longer clobbers is_public (#8498)

### What changes were proposed in this PR?

Closes #8496. A regression from #8125: since then, every workflow's
second autosave (and every one after it) fails with 500, silently on the
operator canvas and as "Could not save" on the Form View.

`persistWorkflow` wrote `is_public` from the request. The frontend feeds
the saved row straight back as its metadata, and that row names the flag
`isPublic` while the rest of the frontend calls it `isPublished`, so the
very next save went out without the flag, the update wrote NULL into a
NOT NULL column, and the request failed. A stale `isPublic: false` on a
save could likewise un-publish a published workflow.

- Backend: `saveWorkflowFields` now writes name, description and content
only. Publishing stays with `/public` and `/private`, `default_view`
with `/set-default-view`, and the timestamps are not rewritten, so a
save can never clobber a concurrent change to any of them.
- Frontend: `WorkflowPersistService.persistWorkflow` no longer sends
`isPublic` (the endpoint does not read it, and the value is not reliably
known after the first save), and `WorkflowUtilService.parseWorkflowInfo`
carries a persist response's `isPublic` over to `isPublished`, so
metadata fed back from a save keeps the publish state instead of
dropping it.

The Form View stack is not blocked by this: #8455 touches none of these
files, and #8456 touches `workflow-persist.service.ts` only in
`createWorkflow` (adding `defaultView`), a different function; a dry-run
merge of the two is clean.

### Any related issues, documentation, discussions?

Closes #8496. Found while verifying #8455 on a flag-on instance (parent
#8011).

### How was this PR tested?

Backend: `WorkflowResourceSpec` gains two tests, a save carrying no flag
neither fails nor changes `is_public` after `/public`, and a save
carrying `false` does not un-publish; the existing default-view save
test was updated to send no flag, as the frontend does.
`WorkflowResourceSpec` and `PublishedCopySchemaSpec` pass (87 tests),
scalafmt clean.

Frontend: the persist spec asserts the save payload carries no
`isPublic` and that the response's `isPublic` comes back as
`isPublished`; `parseWorkflowInfo` gains tests for the carry-over and
for leaving a present `isPublished` alone. Full suite passes (5777),
changed lines fully covered, eslint, prettier and the production (AOT)
build pass.

End to end, against a running stack rebuilt with this change: the exact
second-save payload that returned 500 now returns 200 with `is_public`
unchanged; a create-through-persist with the new payload inserts with
`is_public = false`; and in a headless browser the Form View renames a
workflow twice with every `/api/workflow/persist` answering 200, no
`isPublic` key in any request body, and no "Could not save".

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

Yes. Generated-by: Claude Code (Claude Fable 5.1, Anthropic).
Co-authored with Claude, reviewed line by line by the author before
submission.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01FVvP3ttj22f9LB4p9u2anY

Co-authored-by: Claude Fable 5.1 <[email protected]>
Co-authored-by: Meng Wang <[email protected]>

Report URL: https://github.com/apache/texera/actions/runs/34555222807

With regards,
GitHub Actions via GitBox

Reply via email to