Skip to content

Commit 29fa3a0

Browse files
lunnylafriks
authored andcommitted
fix race on indexer (#9136) (#9139)
1 parent 65a573f commit 29fa3a0

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

models/repo_indexer.go

+12-7
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func (repo *Repository) updateIndexerStatus(sha string) error {
5858
}
5959

6060
type repoIndexerOperation struct {
61-
repo *Repository
61+
repoID int64
6262
deleted bool
6363
watchers []chan<- error
6464
}
@@ -122,7 +122,7 @@ func populateRepoIndexer(maxRepoID int64) {
122122
}
123123
for _, repo := range repos {
124124
repoIndexerOperationQueue <- repoIndexerOperation{
125-
repo: repo,
125+
repoID: repo.ID,
126126
deleted: false,
127127
}
128128
maxRepoID = repo.ID - 1
@@ -131,7 +131,12 @@ func populateRepoIndexer(maxRepoID int64) {
131131
log.Info("Done populating the repo indexer with existing repositories")
132132
}
133133

134-
func updateRepoIndexer(repo *Repository) error {
134+
func updateRepoIndexer(repoID int64) error {
135+
repo, err := getRepositoryByID(x, repoID)
136+
if err != nil {
137+
return err
138+
}
139+
135140
sha, err := getDefaultBranchSha(repo)
136141
if err != nil {
137142
return err
@@ -339,11 +344,11 @@ func processRepoIndexerOperationQueue() {
339344
op := <-repoIndexerOperationQueue
340345
var err error
341346
if op.deleted {
342-
if err = indexer.DeleteRepoFromIndexer(op.repo.ID); err != nil {
347+
if err = indexer.DeleteRepoFromIndexer(op.repoID); err != nil {
343348
log.Error("DeleteRepoFromIndexer: %v", err)
344349
}
345350
} else {
346-
if err = updateRepoIndexer(op.repo); err != nil {
351+
if err = updateRepoIndexer(op.repoID); err != nil {
347352
log.Error("updateRepoIndexer: %v", err)
348353
}
349354
}
@@ -355,12 +360,12 @@ func processRepoIndexerOperationQueue() {
355360

356361
// DeleteRepoFromIndexer remove all of a repository's entries from the indexer
357362
func DeleteRepoFromIndexer(repo *Repository, watchers ...chan<- error) {
358-
addOperationToQueue(repoIndexerOperation{repo: repo, deleted: true, watchers: watchers})
363+
addOperationToQueue(repoIndexerOperation{repoID: repo.ID, deleted: true, watchers: watchers})
359364
}
360365

361366
// UpdateRepoIndexer update a repository's entries in the indexer
362367
func UpdateRepoIndexer(repo *Repository, watchers ...chan<- error) {
363-
addOperationToQueue(repoIndexerOperation{repo: repo, deleted: false, watchers: watchers})
368+
addOperationToQueue(repoIndexerOperation{repoID: repo.ID, deleted: false, watchers: watchers})
364369
}
365370

366371
func addOperationToQueue(op repoIndexerOperation) {

0 commit comments

Comments
 (0)