feat: [CDE-142]: gitspace count query optimization (#2230)

* feat: [CDE-142]: gitspace count query optimization
* feat: [CDE-142]: gitspace count query optimization
unified-ui
Ansuman Satapathy 2024-07-16 07:59:17 +00:00 committed by Harness
parent 6e516183fd
commit b7e720c220
3 changed files with 15 additions and 14 deletions

View File

@ -4,3 +4,4 @@ GITNESS_PRINCIPAL_ADMIN_EMAIL=admin@gitness.io
GITNESS_PRINCIPAL_ADMIN_PASSWORD=changeit GITNESS_PRINCIPAL_ADMIN_PASSWORD=changeit
GITNESS_WEBHOOK_ALLOW_LOOPBACK=true GITNESS_WEBHOOK_ALLOW_LOOPBACK=true
GITNESS_METRIC_ENABLED=false GITNESS_METRIC_ENABLED=false
GITNESS_GITSPACE_ENABLE=true

View File

@ -89,7 +89,6 @@ func (c *Controller) Create(
if err != nil { if err != nil {
return nil, err return nil, err
} }
// TODO figure out how to flush the DB txn above before we proceed.
err = c.tx.WithTx(ctx, func(ctx context.Context) error { err = c.tx.WithTx(ctx, func(ctx context.Context) error {
infraProviderResource, err := c.infraProviderSvc.FindResourceByIdentifier( infraProviderResource, err := c.infraProviderSvc.FindResourceByIdentifier(
ctx, ctx,

View File

@ -51,25 +51,22 @@ func (c *Controller) ListGitspaces(
if err != nil { if err != nil {
return fmt.Errorf("failed to list gitspace configs: %w", err) return fmt.Errorf("failed to list gitspace configs: %w", err)
} }
if len(gitspaceConfigs) >= filter.Size {
count, err = c.gitspaceConfigStore.Count(ctx, gitspaceFilter) count, err = c.gitspaceConfigStore.Count(ctx, gitspaceFilter)
if err != nil { if err != nil {
return fmt.Errorf("failed to count gitspaces in space: %w", err) return fmt.Errorf("failed to count gitspaces in space: %w", err)
} }
var gitspaceConfigIDs = make([]int64, 0) } else {
for idx := 0; idx < len(gitspaceConfigs); idx++ { count = int64(len(gitspaceConfigs))
if gitspaceConfigs[idx].IsDeleted {
continue
} }
gitspaceConfigs[idx].SpacePath = space.Path // As the API is for a space, this will remain same gitspaceInstancesMap, err := c.getLatestInstanceMap(ctx, gitspaceConfigs)
gitspaceConfigIDs = append(gitspaceConfigIDs, gitspaceConfigs[idx].ID)
}
gitspaceInstancesMap, err := c.getLatestInstanceMap(ctx, gitspaceConfigIDs)
if err != nil { if err != nil {
return err return err
} }
for _, gitspaceConfig := range gitspaceConfigs { for _, gitspaceConfig := range gitspaceConfigs {
instance := gitspaceInstancesMap[gitspaceConfig.ID] instance := gitspaceInstancesMap[gitspaceConfig.ID]
gitspaceConfig.GitspaceInstance = instance gitspaceConfig.GitspaceInstance = instance
gitspaceConfig.SpacePath = space.Path
if instance != nil { if instance != nil {
gitspaceStateType, err := enum.GetGitspaceStateFromInstance(instance.State) gitspaceStateType, err := enum.GetGitspaceStateFromInstance(instance.State)
if err != nil { if err != nil {
@ -91,8 +88,12 @@ func (c *Controller) ListGitspaces(
func (c *Controller) getLatestInstanceMap( func (c *Controller) getLatestInstanceMap(
ctx context.Context, ctx context.Context,
gitspaceConfigIDs []int64, gitspaceConfigs []*types.GitspaceConfig,
) (map[int64]*types.GitspaceInstance, error) { ) (map[int64]*types.GitspaceInstance, error) {
var gitspaceConfigIDs = make([]int64, 0)
for idx := 0; idx < len(gitspaceConfigs); idx++ {
gitspaceConfigIDs = append(gitspaceConfigIDs, gitspaceConfigs[idx].ID)
}
var gitspaceInstances, err = c.gitspaceInstanceStore.FindAllLatestByGitspaceConfigID(ctx, gitspaceConfigIDs) var gitspaceInstances, err = c.gitspaceInstanceStore.FindAllLatestByGitspaceConfigID(ctx, gitspaceConfigIDs)
if err != nil { if err != nil {
return nil, err return nil, err