mirror of https://github.com/harness/drone.git
feat: [CDE-142]: gitspace count query optimization (#2230)
* feat: [CDE-142]: gitspace count query optimization * feat: [CDE-142]: gitspace count query optimizationunified-ui
parent
6e516183fd
commit
b7e720c220
|
@ -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
|
|
@ -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,
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue