Skip to content

Commit

Permalink
Merge pull request concourse#8142 from evanchaoli/check-placement
Browse files Browse the repository at this point in the history
Force get and check to use "fewest-build-containers" strategy.
  • Loading branch information
xtremerui committed Mar 4, 2022
2 parents ea3c0a0 + 7c40d0c commit 2dabbe3
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 6 deletions.
19 changes: 16 additions & 3 deletions atc/atccmd/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -1027,7 +1027,7 @@ func (cmd *RunCommand) backendComponents(
return nil, err
}

buildContainerStrategy, err := cmd.chooseBuildContainerStrategy()
buildContainerStrategy, noInputBuildContainerStrategy, err := cmd.chooseBuildContainerStrategy()
if err != nil {
return nil, err
}
Expand All @@ -1051,6 +1051,7 @@ func (cmd *RunCommand) backendComponents(
secretManager,
defaultLimits,
buildContainerStrategy,
noInputBuildContainerStrategy,
lockFactory,
rateLimiter,
policyChecker,
Expand Down Expand Up @@ -1657,8 +1658,18 @@ func constructLockConn(driverName, connectionString string) (*sql.DB, error) {
return dbConn, nil
}

func (cmd *RunCommand) chooseBuildContainerStrategy() (worker.PlacementStrategy, error) {
return worker.NewPlacementStrategy(cmd.ContainerPlacementStrategyOptions)
func (cmd *RunCommand) chooseBuildContainerStrategy() (worker.PlacementStrategy, worker.PlacementStrategy, error) {
strategy, err := worker.NewPlacementStrategy(cmd.ContainerPlacementStrategyOptions)
if err != nil {
return nil, nil, err
}
noInputStepStrategy, err := worker.NewPlacementStrategy(worker.PlacementOptions{
Strategies: []string{"fewest-build-containers"},
})
if err != nil {
return nil, nil, err
}
return strategy, noInputStepStrategy, nil
}

func (cmd *RunCommand) configureAuthForDefaultTeam(teamFactory db.TeamFactory) error {
Expand Down Expand Up @@ -1694,6 +1705,7 @@ func (cmd *RunCommand) constructEngine(
secretManager creds.Secrets,
defaultLimits atc.ContainerLimits,
strategy worker.PlacementStrategy,
noInputStrategy worker.PlacementStrategy,
lockFactory lock.LockFactory,
rateLimiter engine.RateLimiter,
policyChecker policy.Checker,
Expand All @@ -1710,6 +1722,7 @@ func (cmd *RunCommand) constructEngine(
resourceConfigFactory,
defaultLimits,
strategy,
noInputStrategy,
cmd.GlobalResourceCheckTimeout,
cmd.DefaultGetTimeout,
cmd.DefaultPutTimeout,
Expand Down
7 changes: 5 additions & 2 deletions atc/engine/step_factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ type coreStepFactory struct {
resourceConfigFactory db.ResourceConfigFactory
defaultLimits atc.ContainerLimits
strategy worker.PlacementStrategy
noInputStrategy worker.PlacementStrategy
defaultCheckTimeout time.Duration
defaultGetTimeout time.Duration
defaultPutTimeout time.Duration
Expand All @@ -40,6 +41,7 @@ func NewCoreStepFactory(
resourceConfigFactory db.ResourceConfigFactory,
defaultLimits atc.ContainerLimits,
strategy worker.PlacementStrategy,
noInputStrategy worker.PlacementStrategy,
defaultCheckTimeout time.Duration,
defaultGetTimeout time.Duration,
defaultPutTimeout time.Duration,
Expand All @@ -55,6 +57,7 @@ func NewCoreStepFactory(
resourceConfigFactory: resourceConfigFactory,
defaultLimits: defaultLimits,
strategy: strategy,
noInputStrategy: noInputStrategy,
defaultCheckTimeout: defaultCheckTimeout,
defaultGetTimeout: defaultGetTimeout,
defaultPutTimeout: defaultPutTimeout,
Expand All @@ -77,7 +80,7 @@ func (factory *coreStepFactory) GetStep(
containerMetadata,
factory.lockFactory,
factory.resourceCacheFactory,
factory.strategy,
factory.noInputStrategy,
delegateFactory,
factory.pool,
factory.defaultGetTimeout,
Expand Down Expand Up @@ -130,7 +133,7 @@ func (factory *coreStepFactory) CheckStep(
stepMetadata,
factory.resourceConfigFactory,
containerMetadata,
nil,
factory.noInputStrategy,
factory.pool,
delegateFactory,
factory.defaultCheckTimeout,
Expand Down
2 changes: 1 addition & 1 deletion atc/worker/placement.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
)

type PlacementOptions struct {
Strategies []string `long:"container-placement-strategy" default:"volume-locality" choice:"volume-locality" choice:"random" choice:"fewest-build-containers" choice:"limit-active-tasks" choice:"limit-active-containers" choice:"limit-active-volumes" description:"Method by which a worker is selected during container placement. If multiple methods are specified, they will be applied in order. Random strategy should only be used alone."`
Strategies []string `long:"container-placement-strategy" default:"volume-locality" default:"fewest-build-containers" choice:"volume-locality" choice:"random" choice:"fewest-build-containers" choice:"limit-active-tasks" choice:"limit-active-containers" choice:"limit-active-volumes" description:"Method by which a worker is selected during container placement. If multiple methods are specified, they will be applied in order. Random strategy should only be used alone."`
MaxActiveTasksPerWorker int `long:"max-active-tasks-per-worker" default:"0" description:"Maximum allowed number of active build tasks per worker. Has effect only when used with limit-active-tasks placement strategy. 0 means no limit."`
MaxActiveContainersPerWorker int `long:"max-active-containers-per-worker" default:"0" description:"Maximum allowed number of active containers per worker. Has effect only when used with limit-active-containers placement strategy. 0 means no limit."`
MaxActiveVolumesPerWorker int `long:"max-active-volumes-per-worker" default:"0" description:"Maximum allowed number of active volumes per worker. Has effect only when used with limit-active-volumes placement strategy. 0 means no limit."`
Expand Down

0 comments on commit 2dabbe3

Please sign in to comment.