mirror of
https://github.com/harness/drone.git
synced 2025-05-19 02:20:03 +08:00
chore: [CODE-3148]: remove repo git info cache (#3421)
* remove repo git info cache
This commit is contained in:
parent
0e372cc7ec
commit
a4a05b6281
@ -374,7 +374,5 @@ func (c *Controller) updateLastGITPushTime(
|
||||
return
|
||||
}
|
||||
|
||||
c.repoFinder.MarkChanged(ctx, repo.ID)
|
||||
|
||||
*repo = *newRepo
|
||||
}
|
||||
|
@ -58,7 +58,7 @@ func (s *Service) triggerPREventOnBranchUpdate(ctx context.Context,
|
||||
|
||||
var commitTitle string
|
||||
err := func() error {
|
||||
repo, err := s.repoGitInfoCache.Get(ctx, event.Payload.RepoID)
|
||||
repo, err := s.repoFinder.FindByID(ctx, event.Payload.RepoID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get repo git info: %w", err)
|
||||
}
|
||||
@ -86,7 +86,7 @@ func (s *Service) triggerPREventOnBranchUpdate(ctx context.Context,
|
||||
s.forEveryOpenPR(ctx, event.Payload.RepoID, event.Payload.Ref, func(pr *types.PullReq) error {
|
||||
// First check if the merge base has changed
|
||||
|
||||
targetRepo, err := s.repoGitInfoCache.Get(ctx, pr.TargetRepoID)
|
||||
targetRepo, err := s.repoFinder.FindByID(ctx, pr.TargetRepoID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get target repo git info: %w", err)
|
||||
}
|
||||
@ -178,7 +178,7 @@ func (s *Service) closePullReqOnBranchDelete(ctx context.Context,
|
||||
event *events.Event[*gitevents.BranchDeletedPayload],
|
||||
) error {
|
||||
s.forEveryOpenPR(ctx, event.Payload.RepoID, event.Payload.Ref, func(pr *types.PullReq) error {
|
||||
targetRepo, err := s.repoGitInfoCache.Get(ctx, pr.TargetRepoID)
|
||||
targetRepo, err := s.repoFinder.FindByID(ctx, pr.TargetRepoID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get repo info: %w", err)
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ func (s *Service) updateCodeComments(ctx context.Context,
|
||||
targetRepoID, pullreqID int64,
|
||||
newSourceSHA, newMergeBaseSHA string,
|
||||
) error {
|
||||
repoGit, err := s.repoGitInfoCache.Get(ctx, targetRepoID)
|
||||
repoGit, err := s.repoFinder.FindByID(ctx, targetRepoID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get repo git info: %w", err)
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ import (
|
||||
func (s *Service) handleFileViewedOnBranchUpdate(ctx context.Context,
|
||||
event *events.Event[*pullreqevents.BranchUpdatedPayload],
|
||||
) error {
|
||||
repoGit, err := s.repoGitInfoCache.Get(ctx, event.Payload.TargetRepoID)
|
||||
repoGit, err := s.repoFinder.FindByID(ctx, event.Payload.TargetRepoID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get repo git info: %w", err)
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ import (
|
||||
func (s *Service) updateHeadRefOnBranchUpdate(ctx context.Context,
|
||||
event *events.Event[*pullreqevents.BranchUpdatedPayload],
|
||||
) error {
|
||||
repoGit, err := s.repoGitInfoCache.Get(ctx, event.Payload.TargetRepoID)
|
||||
repoGit, err := s.repoFinder.FindByID(ctx, event.Payload.TargetRepoID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get repo git info: %w", err)
|
||||
}
|
||||
|
@ -128,14 +128,14 @@ func (s *Service) updateMergeData(
|
||||
}()
|
||||
|
||||
// load repository objects
|
||||
targetRepo, err := s.repoGitInfoCache.Get(ctx, pr.TargetRepoID)
|
||||
targetRepo, err := s.repoFinder.FindByID(ctx, pr.TargetRepoID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
sourceRepo := targetRepo
|
||||
if pr.TargetRepoID != pr.SourceRepoID {
|
||||
sourceRepo, err = s.repoGitInfoCache.Get(ctx, pr.SourceRepoID)
|
||||
sourceRepo, err = s.repoFinder.FindByID(ctx, pr.SourceRepoID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -25,6 +25,7 @@ import (
|
||||
pullreqevents "github.com/harness/gitness/app/events/pullreq"
|
||||
"github.com/harness/gitness/app/githook"
|
||||
"github.com/harness/gitness/app/services/codecomments"
|
||||
"github.com/harness/gitness/app/services/refcache"
|
||||
"github.com/harness/gitness/app/sse"
|
||||
"github.com/harness/gitness/app/store"
|
||||
"github.com/harness/gitness/app/url"
|
||||
@ -38,7 +39,7 @@ import (
|
||||
type Service struct {
|
||||
pullreqEvReporter *pullreqevents.Reporter
|
||||
git git.Interface
|
||||
repoGitInfoCache store.RepoGitInfoCache
|
||||
repoFinder refcache.RepoFinder
|
||||
repoStore store.RepoStore
|
||||
pullreqStore store.PullReqStore
|
||||
activityStore store.PullReqActivityStore
|
||||
@ -62,7 +63,7 @@ func New(ctx context.Context,
|
||||
pullreqEvReaderFactory *events.ReaderFactory[*pullreqevents.Reader],
|
||||
pullreqEvReporter *pullreqevents.Reporter,
|
||||
git git.Interface,
|
||||
repoGitInfoCache store.RepoGitInfoCache,
|
||||
repoFinder refcache.RepoFinder,
|
||||
repoStore store.RepoStore,
|
||||
pullreqStore store.PullReqStore,
|
||||
activityStore store.PullReqActivityStore,
|
||||
@ -77,7 +78,7 @@ func New(ctx context.Context,
|
||||
service := &Service{
|
||||
pullreqEvReporter: pullreqEvReporter,
|
||||
git: git,
|
||||
repoGitInfoCache: repoGitInfoCache,
|
||||
repoFinder: repoFinder,
|
||||
repoStore: repoStore,
|
||||
pullreqStore: pullreqStore,
|
||||
activityStore: activityStore,
|
||||
|
@ -41,7 +41,6 @@ type ListService struct {
|
||||
git git.Interface
|
||||
authorizer authz.Authorizer
|
||||
spaceStore store.SpaceStore
|
||||
repoGitInfoCache store.RepoGitInfoCache
|
||||
pullreqStore store.PullReqStore
|
||||
checkStore store.CheckStore
|
||||
repoFinder refcache.RepoFinder
|
||||
@ -54,7 +53,6 @@ func NewListService(
|
||||
git git.Interface,
|
||||
authorizer authz.Authorizer,
|
||||
spaceStore store.SpaceStore,
|
||||
repoGitInfoCache store.RepoGitInfoCache,
|
||||
pullreqStore store.PullReqStore,
|
||||
checkStore store.CheckStore,
|
||||
repoFinder refcache.RepoFinder,
|
||||
@ -66,7 +64,6 @@ func NewListService(
|
||||
git: git,
|
||||
authorizer: authorizer,
|
||||
spaceStore: spaceStore,
|
||||
repoGitInfoCache: repoGitInfoCache,
|
||||
pullreqStore: pullreqStore,
|
||||
checkStore: checkStore,
|
||||
repoFinder: repoFinder,
|
||||
@ -229,13 +226,13 @@ func (c *ListService) backfillStats(
|
||||
return nil
|
||||
}
|
||||
|
||||
repoGitInfo, err := c.repoGitInfoCache.Get(ctx, pr.TargetRepoID)
|
||||
repo, err := c.repoFinder.FindByID(ctx, pr.TargetRepoID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed get repo git info to fetch diff stats: %w", err)
|
||||
}
|
||||
|
||||
output, err := c.git.DiffStats(ctx, &git.DiffParams{
|
||||
ReadParams: git.CreateReadParams(repoGitInfo),
|
||||
ReadParams: git.CreateReadParams(repo),
|
||||
BaseRef: pr.MergeBaseSHA,
|
||||
HeadRef: pr.SourceSHA,
|
||||
})
|
||||
|
@ -47,7 +47,7 @@ func ProvideService(ctx context.Context,
|
||||
pullReqEvFactory *events.ReaderFactory[*pullreqevents.Reader],
|
||||
pullReqEvReporter *pullreqevents.Reporter,
|
||||
git git.Interface,
|
||||
repoGitInfoCache store.RepoGitInfoCache,
|
||||
repoFinder refcache.RepoFinder,
|
||||
repoStore store.RepoStore,
|
||||
pullreqStore store.PullReqStore,
|
||||
activityStore store.PullReqActivityStore,
|
||||
@ -65,7 +65,7 @@ func ProvideService(ctx context.Context,
|
||||
pullReqEvFactory,
|
||||
pullReqEvReporter,
|
||||
git,
|
||||
repoGitInfoCache,
|
||||
repoFinder,
|
||||
repoStore,
|
||||
pullreqStore,
|
||||
activityStore,
|
||||
@ -84,7 +84,6 @@ func ProvideListService(
|
||||
git git.Interface,
|
||||
authorizer authz.Authorizer,
|
||||
spaceStore store.SpaceStore,
|
||||
repoGitInfoCache store.RepoGitInfoCache,
|
||||
pullreqStore store.PullReqStore,
|
||||
checkStore store.CheckStore,
|
||||
repoFinder refcache.RepoFinder,
|
||||
@ -96,7 +95,6 @@ func ProvideListService(
|
||||
git,
|
||||
authorizer,
|
||||
spaceStore,
|
||||
repoGitInfoCache,
|
||||
pullreqStore,
|
||||
checkStore,
|
||||
repoFinder,
|
||||
|
@ -26,9 +26,6 @@ type (
|
||||
// SpacePathCache caches a raw path to a space path.
|
||||
SpacePathCache cache.Cache[string, *types.SpacePath]
|
||||
|
||||
// RepoGitInfoCache caches repository IDs to values GitUID.
|
||||
RepoGitInfoCache cache.Cache[int64, *types.RepositoryGitInfo]
|
||||
|
||||
// InfraProviderResourceCache caches infraprovider resourceIDs to infraprovider resource.
|
||||
InfraProviderResourceCache cache.ExtendedCache[int64, *types.InfraProviderResource]
|
||||
)
|
||||
|
6
app/store/cache/wire.go
vendored
6
app/store/cache/wire.go
vendored
@ -28,7 +28,6 @@ import (
|
||||
var WireSet = wire.NewSet(
|
||||
ProvidePrincipalInfoCache,
|
||||
ProvidePathCache,
|
||||
ProvideRepoGitInfoCache,
|
||||
ProvideInfraProviderResourceCache,
|
||||
)
|
||||
|
||||
@ -45,11 +44,6 @@ func ProvidePathCache(
|
||||
return New(pathStore, spacePathTransformation)
|
||||
}
|
||||
|
||||
// ProvideRepoGitInfoCache provides a cache for storing types.RepositoryGitInfo objects.
|
||||
func ProvideRepoGitInfoCache(getter store.RepoGitInfoView) store.RepoGitInfoCache {
|
||||
return cache.New[int64, *types.RepositoryGitInfo](getter, 15*time.Minute)
|
||||
}
|
||||
|
||||
// ProvideInfraProviderResourceCache provides a cache for storing types.InfraProviderResource objects.
|
||||
func ProvideInfraProviderResourceCache(getter store.InfraProviderResourceView) store.InfraProviderResourceCache {
|
||||
return cache.NewExtended[int64, *types.InfraProviderResource](getter, 5*time.Minute)
|
||||
|
@ -326,11 +326,6 @@ type (
|
||||
) error
|
||||
}
|
||||
|
||||
// RepoGitInfoView defines the repository GitUID view.
|
||||
RepoGitInfoView interface {
|
||||
Find(ctx context.Context, id int64) (*types.RepositoryGitInfo, error)
|
||||
}
|
||||
|
||||
// MembershipStore defines the membership data storage.
|
||||
MembershipStore interface {
|
||||
Find(ctx context.Context, key types.MembershipKey) (*types.Membership, error)
|
||||
|
@ -1,62 +0,0 @@
|
||||
// Copyright 2023 Harness, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package database
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/harness/gitness/app/store"
|
||||
"github.com/harness/gitness/store/database"
|
||||
"github.com/harness/gitness/store/database/dbtx"
|
||||
"github.com/harness/gitness/types"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
var _ store.RepoGitInfoView = (*RepoGitInfoView)(nil)
|
||||
|
||||
// NewRepoGitInfoView returns a new RepoGitInfoView.
|
||||
// It's used by the repository git UID cache.
|
||||
func NewRepoGitInfoView(db *sqlx.DB) *RepoGitInfoView {
|
||||
return &RepoGitInfoView{
|
||||
db: db,
|
||||
}
|
||||
}
|
||||
|
||||
type RepoGitInfoView struct {
|
||||
db *sqlx.DB
|
||||
}
|
||||
|
||||
func (s *RepoGitInfoView) Find(ctx context.Context, id int64) (*types.RepositoryGitInfo, error) {
|
||||
const sqlQuery = `
|
||||
SELECT repo_git_uid, repo_parent_id
|
||||
FROM repositories
|
||||
WHERE repo_id = $1`
|
||||
|
||||
db := dbtx.GetAccessor(ctx, s.db)
|
||||
|
||||
v := db.QueryRowContext(ctx, sqlQuery, id)
|
||||
if err := v.Err(); err != nil {
|
||||
return nil, database.ProcessSQLErrorf(ctx, err, "failed to find git uid by repository id")
|
||||
}
|
||||
|
||||
var result = types.RepositoryGitInfo{ID: id}
|
||||
|
||||
if err := v.Scan(&result.GitUID, &result.ParentID); err != nil {
|
||||
return nil, database.ProcessSQLErrorf(ctx, err, "failed to scan git uid")
|
||||
}
|
||||
|
||||
return &result, nil
|
||||
}
|
@ -44,7 +44,6 @@ var WireSet = wire.NewSet(
|
||||
ProvideStageStore,
|
||||
ProvideStepStore,
|
||||
ProvideSecretStore,
|
||||
ProvideRepoGitInfoView,
|
||||
ProvideMembershipStore,
|
||||
ProvideTokenStore,
|
||||
ProvidePullReqStore,
|
||||
@ -231,11 +230,6 @@ func ProvidePluginStore(db *sqlx.DB) store.PluginStore {
|
||||
return NewPluginStore(db)
|
||||
}
|
||||
|
||||
// ProvideRepoGitInfoView provides a repo git UID view.
|
||||
func ProvideRepoGitInfoView(db *sqlx.DB) store.RepoGitInfoView {
|
||||
return NewRepoGitInfoView(db)
|
||||
}
|
||||
|
||||
func ProvideMembershipStore(
|
||||
db *sqlx.DB,
|
||||
principalInfoCache store.PrincipalInfoCache,
|
||||
|
@ -285,9 +285,7 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
|
||||
spaceIdentifier := check.ProvideSpaceIdentifierCheck()
|
||||
secretStore := database.ProvideSecretStore(db)
|
||||
connectorStore := database.ProvideConnectorStore(db, secretStore)
|
||||
repoGitInfoView := database.ProvideRepoGitInfoView(db)
|
||||
repoGitInfoCache := cache.ProvideRepoGitInfoCache(repoGitInfoView)
|
||||
listService := pullreq.ProvideListService(transactor, gitInterface, authorizer, spaceStore, repoGitInfoCache, pullReqStore, checkStore, repoFinder, labelService, protectionManager)
|
||||
listService := pullreq.ProvideListService(transactor, gitInterface, authorizer, spaceStore, pullReqStore, checkStore, repoFinder, labelService, protectionManager)
|
||||
exporterRepository, err := exporter.ProvideSpaceExporter(provider, gitInterface, repoStore, jobScheduler, executor, encrypter, streamer)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@ -379,7 +377,7 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
pullreqService, err := pullreq.ProvideService(ctx, config, readerFactory, eventsReaderFactory, reporter4, gitInterface, repoGitInfoCache, repoStore, pullReqStore, pullReqActivityStore, principalInfoCache, codeCommentView, migrator, pullReqFileViewStore, pubSub, provider, streamer)
|
||||
pullreqService, err := pullreq.ProvideService(ctx, config, readerFactory, eventsReaderFactory, reporter4, gitInterface, repoFinder, repoStore, pullReqStore, pullReqActivityStore, principalInfoCache, codeCommentView, migrator, pullReqFileViewStore, pubSub, provider, streamer)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user