Template
1
0
Fork 0
mirror of https://codeberg.org/forgejo/forgejo synced 2024-11-22 09:54:24 +01:00

fix(api): error 500 on tag creation when a workflow exists

files_service.CreateCommitStatus must not explicitly call
gitRepo.Close(), it will be called by the closer function.

Calling it explicitly will cause the repository to be closed
prematurely when obtained from the context, making it unusuable by the
caller later on.

For instance, as CreateCommitStatus is called indirectly when a
workflow exists for the tag to be created, it will make the repositoryn
in the context unusable for the tag creation API.
This commit is contained in:
Earl Warren 2024-04-19 10:19:27 +02:00
parent cc80e66153
commit a53194f4b1
No known key found for this signature in database
GPG key ID: 0579CB2928A78A00

View file

@ -30,13 +30,11 @@ func CreateCommitStatus(ctx context.Context, repo *repo_model.Repository, creato
defer closer.Close() defer closer.Close()
if commit, err := gitRepo.GetCommit(sha); err != nil { if commit, err := gitRepo.GetCommit(sha); err != nil {
gitRepo.Close()
return fmt.Errorf("GetCommit[%s]: %w", sha, err) return fmt.Errorf("GetCommit[%s]: %w", sha, err)
} else if len(sha) != git.SHAFullLength { } else if len(sha) != git.SHAFullLength {
// use complete commit sha // use complete commit sha
sha = commit.ID.String() sha = commit.ID.String()
} }
gitRepo.Close()
if err := git_model.NewCommitStatus(ctx, git_model.NewCommitStatusOptions{ if err := git_model.NewCommitStatus(ctx, git_model.NewCommitStatusOptions{
Repo: repo, Repo: repo,