diff --git a/app/api/controller/githook/post_receive.go b/app/api/controller/githook/post_receive.go index f566922ff..1c64dedee 100644 --- a/app/api/controller/githook/post_receive.go +++ b/app/api/controller/githook/post_receive.go @@ -374,7 +374,5 @@ func (c *Controller) updateLastGITPushTime( return } - c.repoFinder.MarkChanged(ctx, repo.ID) - *repo = *newRepo } diff --git a/app/services/pullreq/handlers_branch.go b/app/services/pullreq/handlers_branch.go index 7ee3b1caa..7e45c307a 100644 --- a/app/services/pullreq/handlers_branch.go +++ b/app/services/pullreq/handlers_branch.go @@ -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) } diff --git a/app/services/pullreq/handlers_code_comments.go b/app/services/pullreq/handlers_code_comments.go index 4ddcf681b..2c47192de 100644 --- a/app/services/pullreq/handlers_code_comments.go +++ b/app/services/pullreq/handlers_code_comments.go @@ -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) } diff --git a/app/services/pullreq/handlers_file_viewed.go b/app/services/pullreq/handlers_file_viewed.go index e74fcc442..04111f79a 100644 --- a/app/services/pullreq/handlers_file_viewed.go +++ b/app/services/pullreq/handlers_file_viewed.go @@ -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) } diff --git a/app/services/pullreq/handlers_head_ref.go b/app/services/pullreq/handlers_head_ref.go index 890ee8b01..1391cc49c 100644 --- a/app/services/pullreq/handlers_head_ref.go +++ b/app/services/pullreq/handlers_head_ref.go @@ -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) } diff --git a/app/services/pullreq/handlers_mergeable.go b/app/services/pullreq/handlers_mergeable.go index 397a5b934..9077809cb 100644 --- a/app/services/pullreq/handlers_mergeable.go +++ b/app/services/pullreq/handlers_mergeable.go @@ -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 } diff --git a/app/services/pullreq/service.go b/app/services/pullreq/service.go index 2793a54eb..eb4ea0fee 100644 --- a/app/services/pullreq/service.go +++ b/app/services/pullreq/service.go @@ -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, diff --git a/app/services/pullreq/service_list.go b/app/services/pullreq/service_list.go index 82fcd2c6f..4a6bf5fd8 100644 --- a/app/services/pullreq/service_list.go +++ b/app/services/pullreq/service_list.go @@ -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, }) diff --git a/app/services/pullreq/wire.go b/app/services/pullreq/wire.go index 850438b04..fd275a3f2 100644 --- a/app/services/pullreq/wire.go +++ b/app/services/pullreq/wire.go @@ -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, diff --git a/app/store/cache.go b/app/store/cache.go index 333158ea8..ff5cc4f3b 100644 --- a/app/store/cache.go +++ b/app/store/cache.go @@ -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] ) diff --git a/app/store/cache/wire.go b/app/store/cache/wire.go index 4c30a7291..b32d254bd 100644 --- a/app/store/cache/wire.go +++ b/app/store/cache/wire.go @@ -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) diff --git a/app/store/database.go b/app/store/database.go index eedd74933..63c0457ef 100644 --- a/app/store/database.go +++ b/app/store/database.go @@ -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) diff --git a/app/store/database/repo_git_info.go b/app/store/database/repo_git_info.go deleted file mode 100644 index 073f85990..000000000 --- a/app/store/database/repo_git_info.go +++ /dev/null @@ -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 -} diff --git a/app/store/database/wire.go b/app/store/database/wire.go index 543687c59..153b751a2 100644 --- a/app/store/database/wire.go +++ b/app/store/database/wire.go @@ -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, diff --git a/cmd/gitness/wire_gen.go b/cmd/gitness/wire_gen.go index 3423bc911..bd3da8568 100644 --- a/cmd/gitness/wire_gen.go +++ b/cmd/gitness/wire_gen.go @@ -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 }