JingsongLi commented on PR #790:
URL: https://github.com/apache/paimon-rust/pull/790#issuecomment-5526304069

   **[P2] Support Go release recovery when rerunning only failed jobs**
   
   Location: 
[`.github/workflows/release-go-binding.yml:321–323`](https://github.com/apache/paimon-rust/blob/9a5775c784ca21992f9cbb7d66a14005c657f1ba/.github/workflows/release-go-binding.yml#L321-L323)
   
   On the first run, `validate` outputs an empty `tag_object` because the Go 
release tag does not exist yet. If `publish` successfully pushes the tag but 
then fails while creating the GitHub Release, selecting **Re-run failed jobs** 
reruns `publish` while retaining the successful `validate` job's outputs. The 
new checkout now contains the tag, but `EXPECTED_TAG_OBJECT` is still empty, so 
this comparison fails with `tag ... changed after validation` before reaching 
the recovery branch.
   
   This leaves a common retry path unsupported by the new recovery logic. 
Rerunning all jobs or starting a new manual run works around it, but rerunning 
only the failed `publish` job cannot recover.
   
   Could tag creation and GitHub Release publication be split into separate 
jobs, with the latter consuming the successful tag job's object SHA? That would 
allow the failed Release job to resume while preserving the strict tag-object 
binding.
   
   I reproduced the guard failure using the actual tag step in an isolated 
local Git repository with a local bare remote. The artifact verifier was 
stubbed; the failure occurs before it is invoked.
   
   


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