yangzhang75 opened a new pull request, #8498:
URL: https://github.com/apache/texera/pull/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 affected: #8455 and #8456 touch neither file.
   
   ### 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
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to