]> source.dussan.org Git - gitea.git/commitdiff
Fix race on updatesize (#5190)
authorLunny Xiao <xiaolunwen@gmail.com>
Fri, 26 Oct 2018 09:37:57 +0000 (17:37 +0800)
committerLauris BH <lauris@nix.lv>
Fri, 26 Oct 2018 09:37:57 +0000 (12:37 +0300)
* fix race on updatesize

* fix more repoPath

models/repo.go
models/status.go

index 61e1e26ae7d04e642af71a4ca32e3ca1f2d90a07..5a47812193c1042fb65350a5db258a3727557733 100644 (file)
@@ -685,7 +685,7 @@ func (repo *Repository) IsOwnedBy(userID int64) bool {
 }
 
 func (repo *Repository) updateSize(e Engine) error {
-       repoInfoSize, err := git.GetRepoSize(repo.RepoPath())
+       repoInfoSize, err := git.GetRepoSize(repo.repoPath(e))
        if err != nil {
                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...
-               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 err = os.Remove(daemonExportFile); err != nil {
                                log.Error(4, "Failed to remove %s: %v", daemonExportFile, err)
index 3146f8d3030d03bdade2916fabafdab998c09ddd..91d011f7c512cb8f4d6728f2137a4a37f6281e55 100644 (file)
@@ -197,14 +197,15 @@ func newCommitStatus(sess *xorm.Session, opts NewCommitStatusOptions) error {
                return fmt.Errorf("newCommitStatus[nil, %s]: no repository specified", opts.SHA)
        }
        opts.CommitStatus.RepoID = opts.Repo.ID
+       repoPath := opts.Repo.repoPath(sess)
 
        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 {
-               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 {
                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)
        if err != nil {
                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 {
-               log.Debug("newCommitStatus[%s, %s]: found", opts.Repo.RepoPath(), opts.SHA)
+               log.Debug("newCommitStatus[%s, %s]: found", repoPath, opts.SHA)
                nextIndex = lastCommitStatus.Index
        }
        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
        if _, err = sess.Insert(opts.CommitStatus); err != nil {
                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