@@ -29,7 +29,7 @@ func NewAutoScaler(parentLogger logger.Logger,
2929 customMetricsClientSet custommetricsv1.CustomMetricsClient ,
3030 options scaler_types.AutoScalerOptions ) (* Autoscaler , error ) {
3131 childLogger := parentLogger .GetChild ("autoscaler" )
32- childLogger .DebugWith ("Creating Autoscaler" ,
32+ childLogger .InfoWith ("Creating Autoscaler" ,
3333 "options" , options )
3434
3535 return & Autoscaler {
@@ -44,6 +44,8 @@ func NewAutoScaler(parentLogger logger.Logger,
4444}
4545
4646func (as * Autoscaler ) Start () error {
47+ as .logger .DebugWith ("Starting" ,
48+ "scaleInterval" , as .scaleInterval )
4749 ticker := time .NewTicker (as .scaleInterval )
4850
4951 go func () {
@@ -145,7 +147,7 @@ func (as *Autoscaler) checkResourceToScale(resource scaler_types.Resource, resou
145147 "value" , value )
146148 }
147149
148- as .logger .InfoWith ("All metric values below threshold, should scale to zero" , "resourceName" , resource .Name )
150+ as .logger .DebugWith ("All metric values below threshold, should scale to zero" , "resourceName" , resource .Name )
149151 return true
150152}
151153
@@ -175,6 +177,7 @@ func (as *Autoscaler) checkResourcesToScale() error {
175177 return errors .Wrap (err , "Failed to get resources metrics" )
176178 }
177179
180+ resourcesToScale := make ([]scaler_types.Resource , 0 )
178181 for idx , resource := range activeResources {
179182 inScaleToZeroProcess , found := as .inScaleToZeroProcessMap [resource .Name ]
180183 if found && inScaleToZeroProcess {
@@ -207,19 +210,28 @@ func (as *Autoscaler) checkResourcesToScale() error {
207210 }
208211
209212 as .inScaleToZeroProcessMap [resource .Name ] = true
210- go func (resource scaler_types.Resource ) {
211- err := as .scaleResourceToZero (resource )
213+ resourcesToScale = append (resourcesToScale , activeResources [idx ])
214+ }
215+
216+ if len (resourcesToScale ) > 0 {
217+ go func (resources []scaler_types.Resource ) {
218+ as .logger .InfoWith ("Scaling resources to zero" , "resources" , resources )
219+ err := as .scaleResourcesToZero (resources )
212220 if err != nil {
213- as .logger .WarnWith ("Failed to scale resource to zero" , "resource " , resource , "err" , errors .GetErrorStackString (err , 10 ))
221+ as .logger .WarnWith ("Failed to scale resources to zero" , "resources " , resources , "err" , errors .GetErrorStackString (err , 10 ))
214222 }
215- delete (as .inScaleToZeroProcessMap , resource .Name )
216- }(activeResources [idx ])
223+ as .logger .InfoWith ("Successfully scaled resources to zero" , "resources" , resources )
224+ for _ , resource := range resources {
225+ delete (as .inScaleToZeroProcessMap , resource .Name )
226+ }
227+ }(resourcesToScale )
217228 }
229+
218230 return nil
219231}
220232
221- func (as * Autoscaler ) scaleResourceToZero ( resource scaler_types.Resource ) error {
222- if err := as .resourceScaler .SetScale (resource , 0 ); err != nil {
233+ func (as * Autoscaler ) scaleResourcesToZero ( resources [] scaler_types.Resource ) error {
234+ if err := as .resourceScaler .SetScale (resources , 0 ); err != nil {
223235 return errors .Wrap (err , "Failed to set scale" )
224236 }
225237
0 commit comments