Skip to content

Commit e9aa39b

Browse files
authored
Fix a branch divergence cache bug (#31659)
Fix #31599 A branch divergence is counted based on the default branch. If the default branch is updated, all divergence caches of the repo need to be deleted.
1 parent 03c8c26 commit e9aa39b

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

services/repository/branch.go

+17
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,23 @@ func DelDivergenceFromCache(repoID int64, branchName string) error {
147147
return cache.GetCache().Delete(getDivergenceCacheKey(repoID, branchName))
148148
}
149149

150+
// DelRepoDivergenceFromCache deletes all divergence caches of a repository
151+
func DelRepoDivergenceFromCache(ctx context.Context, repoID int64) error {
152+
dbBranches, err := db.Find[git_model.Branch](ctx, git_model.FindBranchOptions{
153+
RepoID: repoID,
154+
ListOptions: db.ListOptionsAll,
155+
})
156+
if err != nil {
157+
return err
158+
}
159+
for i := range dbBranches {
160+
if err := DelDivergenceFromCache(repoID, dbBranches[i].Name); err != nil {
161+
log.Error("DelDivergenceFromCache: %v", err)
162+
}
163+
}
164+
return nil
165+
}
166+
150167
func loadOneBranch(ctx context.Context, repo *repo_model.Repository, dbBranch *git_model.Branch, protectedBranches *git_model.ProtectedBranchRules,
151168
repoIDToRepo map[int64]*repo_model.Repository,
152169
repoIDToGitRepo map[int64]*git.Repository,

services/repository/push.go

+8-2
Original file line numberDiff line numberDiff line change
@@ -221,8 +221,14 @@ func pushUpdates(optsList []*repo_module.PushUpdateOptions) error {
221221
}
222222

223223
// delete cache for divergence
224-
if err := DelDivergenceFromCache(repo.ID, branch); err != nil {
225-
log.Error("DelDivergenceFromCache: %v", err)
224+
if branch == repo.DefaultBranch {
225+
if err := DelRepoDivergenceFromCache(ctx, repo.ID); err != nil {
226+
log.Error("DelRepoDivergenceFromCache: %v", err)
227+
}
228+
} else {
229+
if err := DelDivergenceFromCache(repo.ID, branch); err != nil {
230+
log.Error("DelDivergenceFromCache: %v", err)
231+
}
226232
}
227233

228234
commits := repo_module.GitToPushCommits(l)

0 commit comments

Comments
 (0)