mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-21 14:51:00 +01:00
Fix race on updatesize (#5190)
* fix race on updatesize * fix more repoPath
This commit is contained in:
parent
aeb5655c25
commit
e7822473e9
2 changed files with 10 additions and 9 deletions
|
@ -685,7 +685,7 @@ func (repo *Repository) IsOwnedBy(userID int64) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (repo *Repository) updateSize(e Engine) error {
|
func (repo *Repository) updateSize(e Engine) error {
|
||||||
repoInfoSize, err := git.GetRepoSize(repo.RepoPath())
|
repoInfoSize, err := git.GetRepoSize(repo.repoPath(e))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("UpdateSize: %v", err)
|
return fmt.Errorf("UpdateSize: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -1713,7 +1713,7 @@ func updateRepository(e Engine, repo *Repository, visibilityChanged bool) (err e
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create/Remove git-daemon-export-ok for git-daemon...
|
// Create/Remove git-daemon-export-ok for git-daemon...
|
||||||
daemonExportFile := path.Join(repo.RepoPath(), `git-daemon-export-ok`)
|
daemonExportFile := path.Join(repo.repoPath(e), `git-daemon-export-ok`)
|
||||||
if repo.IsPrivate && com.IsExist(daemonExportFile) {
|
if repo.IsPrivate && com.IsExist(daemonExportFile) {
|
||||||
if err = os.Remove(daemonExportFile); err != nil {
|
if err = os.Remove(daemonExportFile); err != nil {
|
||||||
log.Error(4, "Failed to remove %s: %v", daemonExportFile, err)
|
log.Error(4, "Failed to remove %s: %v", daemonExportFile, err)
|
||||||
|
|
|
@ -197,14 +197,15 @@ func newCommitStatus(sess *xorm.Session, opts NewCommitStatusOptions) error {
|
||||||
return fmt.Errorf("newCommitStatus[nil, %s]: no repository specified", opts.SHA)
|
return fmt.Errorf("newCommitStatus[nil, %s]: no repository specified", opts.SHA)
|
||||||
}
|
}
|
||||||
opts.CommitStatus.RepoID = opts.Repo.ID
|
opts.CommitStatus.RepoID = opts.Repo.ID
|
||||||
|
repoPath := opts.Repo.repoPath(sess)
|
||||||
|
|
||||||
if opts.Creator == nil {
|
if opts.Creator == nil {
|
||||||
return fmt.Errorf("newCommitStatus[%s, %s]: no user specified", opts.Repo.RepoPath(), opts.SHA)
|
return fmt.Errorf("newCommitStatus[%s, %s]: no user specified", repoPath, opts.SHA)
|
||||||
}
|
}
|
||||||
|
|
||||||
gitRepo, err := git.OpenRepository(opts.Repo.RepoPath())
|
gitRepo, err := git.OpenRepository(repoPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("OpenRepository[%s]: %v", opts.Repo.RepoPath(), err)
|
return fmt.Errorf("OpenRepository[%s]: %v", repoPath, err)
|
||||||
}
|
}
|
||||||
if _, err := gitRepo.GetCommit(opts.SHA); err != nil {
|
if _, err := gitRepo.GetCommit(opts.SHA); err != nil {
|
||||||
return fmt.Errorf("GetCommit[%s]: %v", opts.SHA, err)
|
return fmt.Errorf("GetCommit[%s]: %v", opts.SHA, err)
|
||||||
|
@ -219,19 +220,19 @@ func newCommitStatus(sess *xorm.Session, opts NewCommitStatusOptions) error {
|
||||||
has, err := sess.Desc("index").Limit(1).Get(lastCommitStatus)
|
has, err := sess.Desc("index").Limit(1).Get(lastCommitStatus)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
sess.Rollback()
|
sess.Rollback()
|
||||||
return fmt.Errorf("newCommitStatus[%s, %s]: %v", opts.Repo.RepoPath(), opts.SHA, err)
|
return fmt.Errorf("newCommitStatus[%s, %s]: %v", repoPath, opts.SHA, err)
|
||||||
}
|
}
|
||||||
if has {
|
if has {
|
||||||
log.Debug("newCommitStatus[%s, %s]: found", opts.Repo.RepoPath(), opts.SHA)
|
log.Debug("newCommitStatus[%s, %s]: found", repoPath, opts.SHA)
|
||||||
nextIndex = lastCommitStatus.Index
|
nextIndex = lastCommitStatus.Index
|
||||||
}
|
}
|
||||||
opts.CommitStatus.Index = nextIndex + 1
|
opts.CommitStatus.Index = nextIndex + 1
|
||||||
log.Debug("newCommitStatus[%s, %s]: %d", opts.Repo.RepoPath(), opts.SHA, opts.CommitStatus.Index)
|
log.Debug("newCommitStatus[%s, %s]: %d", repoPath, opts.SHA, opts.CommitStatus.Index)
|
||||||
|
|
||||||
// Insert new CommitStatus
|
// Insert new CommitStatus
|
||||||
if _, err = sess.Insert(opts.CommitStatus); err != nil {
|
if _, err = sess.Insert(opts.CommitStatus); err != nil {
|
||||||
sess.Rollback()
|
sess.Rollback()
|
||||||
return fmt.Errorf("newCommitStatus[%s, %s]: %v", opts.Repo.RepoPath(), opts.SHA, err)
|
return fmt.Errorf("newCommitStatus[%s, %s]: %v", repoPath, opts.SHA, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
Loading…
Reference in a new issue