From 3d9650771959682f698598cc887596454ec860fc Mon Sep 17 00:00:00 2001 From: Vaibhav Kamra Date: Wed, 15 Mar 2023 06:12:28 -0700 Subject: [PATCH] Do not query repo ID if metrics are disabled (#2803) This skips the call to `getRepoModel` if metrics are disabled and the repository ID is not required. #### Does this PR need a docs update or release note? - [ ] :white_check_mark: Yes, it's included - [ ] :clock1: Yes, but in a later PR - [x] :no_entry: No #### Type of change - [ ] :sunflower: Feature - [x] :bug: Bugfix - [ ] :world_map: Documentation - [ ] :robot: Test - [ ] :computer: CI/Deployment - [ ] :broom: Tech Debt/Cleanup #### Issue(s) * #2802 #### Test Plan - [ ] :muscle: Manual - [x] :zap: Unit test - [ ] :green_heart: E2E --- src/pkg/repository/repository.go | 15 ++++++++++----- src/pkg/repository/repository_test.go | 19 +++++++++++++++++++ 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/pkg/repository/repository.go b/src/pkg/repository/repository.go index b88f8578a..fd94bdb32 100644 --- a/src/pkg/repository/repository.go +++ b/src/pkg/repository/repository.go @@ -209,12 +209,17 @@ func Connect( return nil, errors.Wrap(err, "constructing event bus") } - rm, err := getRepoModel(ctx, ms) - if err != nil { - return nil, errors.New("retrieving repo info") - } + rm := &repositoryModel{} - bus.SetRepoID(string(rm.ID)) + // Do not query repo ID if metrics are disabled + if !opts.DisableMetrics { + rm, err = getRepoModel(ctx, ms) + if err != nil { + return nil, errors.New("retrieving repo info") + } + + bus.SetRepoID(string(rm.ID)) + } complete <- struct{}{} diff --git a/src/pkg/repository/repository_test.go b/src/pkg/repository/repository_test.go index 301dda50e..d14d1abc7 100644 --- a/src/pkg/repository/repository_test.go +++ b/src/pkg/repository/repository_test.go @@ -219,3 +219,22 @@ func (suite *RepositoryIntegrationSuite) TestNewRestore() { require.NoError(t, err) require.NotNil(t, ro) } + +func (suite *RepositoryIntegrationSuite) TestConnect_DisableMetrics() { + ctx, flush := tester.NewContext() + defer flush() + + t := suite.T() + + // need to initialize the repository before we can test connecting to it. + st := tester.NewPrefixedS3Storage(t) + + _, err := repository.Initialize(ctx, account.Account{}, st, control.Options{}) + require.NoError(t, err) + + // now re-connect + r, err := repository.Connect(ctx, account.Account{}, st, control.Options{DisableMetrics: true}) + assert.NoError(t, err) + + assert.Equal(t, "", r.GetID()) +}