49 lines · 1.2 KB · Go
RawDownload
// Copyright 2020 The Gitea Authors. All rights reserved.// SPDX-License-Identifier: MIT package stats import (	"fmt" 	repo_model "forgejo.org/models/repo"	"forgejo.org/modules/graceful"	"forgejo.org/modules/log"	"forgejo.org/modules/queue"	"forgejo.org/modules/setting") // statsQueue represents a queue to handle repository stats updatesvar statsQueue *queue.WorkerPoolQueue[int64] // handle passed PR IDs and test the PRsfunc handler(items ...int64) []int64 {	for _, opts := range items {		if err := indexer.Index(opts); err != nil {			if !setting.IsInTesting {				log.Error("stats queue indexer.Index(%d) failed: %v", opts, err)			}		}	}	return nil} func initStatsQueue() error {	statsQueue = queue.CreateUniqueQueue(graceful.GetManager().ShutdownContext(), "repo_stats_update", handler)	if statsQueue == nil {		return fmt.Errorf("unable to create repo_stats_update queue")	}	go graceful.GetManager().RunWithCancel(statsQueue)	return nil} // UpdateRepoIndexer update a repository's entries in the indexerfunc UpdateRepoIndexer(repo *repo_model.Repository) error {	if err := statsQueue.Push(repo.ID); err != nil {		if err != queue.ErrAlreadyInQueue {			return err		}		log.Debug("Repo ID: %d already queued", repo.ID)	}	return nil}