mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-03 08:02:36 +09:00 
			
		
		
		
	Fix deadlock in updateRepository (#1813)
This commit is contained in:
		@@ -619,18 +619,22 @@ func (repo *Repository) IsOwnedBy(userID int64) bool {
 | 
				
			|||||||
	return repo.OwnerID == userID
 | 
						return repo.OwnerID == userID
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// UpdateSize updates the repository size, calculating it using git.GetRepoSize
 | 
					func (repo *Repository) updateSize(e Engine) error {
 | 
				
			||||||
func (repo *Repository) UpdateSize() error {
 | 
					 | 
				
			||||||
	repoInfoSize, err := git.GetRepoSize(repo.RepoPath())
 | 
						repoInfoSize, err := git.GetRepoSize(repo.RepoPath())
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return fmt.Errorf("UpdateSize: %v", err)
 | 
							return fmt.Errorf("UpdateSize: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	repo.Size = repoInfoSize.Size + repoInfoSize.SizePack
 | 
						repo.Size = repoInfoSize.Size + repoInfoSize.SizePack
 | 
				
			||||||
	_, err = x.ID(repo.ID).Cols("size").Update(repo)
 | 
						_, err = e.Id(repo.ID).Cols("size").Update(repo)
 | 
				
			||||||
	return err
 | 
						return err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// UpdateSize updates the repository size, calculating it using git.GetRepoSize
 | 
				
			||||||
 | 
					func (repo *Repository) UpdateSize() error {
 | 
				
			||||||
 | 
						return repo.updateSize(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// CanBeForked returns true if repository meets the requirements of being forked.
 | 
					// CanBeForked returns true if repository meets the requirements of being forked.
 | 
				
			||||||
func (repo *Repository) CanBeForked() bool {
 | 
					func (repo *Repository) CanBeForked() bool {
 | 
				
			||||||
	return !repo.IsBare
 | 
						return !repo.IsBare
 | 
				
			||||||
@@ -1554,7 +1558,7 @@ func updateRepository(e Engine, repo *Repository, visibilityChanged bool) (err e
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if err = repo.UpdateSize(); err != nil {
 | 
							if err = repo.updateSize(e); err != nil {
 | 
				
			||||||
			log.Error(4, "Failed to update size for repository: %v", err)
 | 
								log.Error(4, "Failed to update size for repository: %v", err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user