Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • If it falls outside a cooldown period, it is executed right away and a timer is started
  • If it falls during the cooldown period, it is not dropped, it is rather stacked to be executed when the period ends.
  • Receiving a scaling event during a cooldown period does not reset the period timer to avoid  increasing the delay in scaling operations.
  • When the period ends, all the stacked scaling operations are executed one by one at a pace ofaggregated to result in a single operation. This operation is executed and then a new scaling-cooldown-period timeis started


The diagram below shows the different steps and cases:

...

PlantUML
@startuml
!pragma teoz true 
skinparam ParticipantPadding 100
participant Scheduler as sch
participant ScalingOperationStack as stack
participant CooldownTimer as timer
[-> sch : scaling event
sch -> sch : trigger scale change

{start1} sch -> timer : start timer

activate timer
[-> sch : scaling event
sch -> stack : stack operation
[-> sch : scaling event
sch -> stack : stack operation
{end1} timer --> sch : end of cooldown period  
deactivate timer
{start1} <-> {end1} : scaling-cooldown-period 
sch -> stack : pop stack operations
sch -> sch : aggregate operations
sch -> sch : trigger scale change
{start2} sch -> timer : start timer
activate timer
||120||
{end2} timer --> sch : end of cooldown period
deactivate timer

{start2} <-> {end2} : scaling-cooldown-period 

sch -> stacksch : popno stack
sch -> sch : trigger scale changeoperation to trigger
@enduml



This diagram is explained as this:

  • A first scaling event is received and the scaling operation is executed right away and then leading to the creation of a cooldown period is started
  • Then 2 scaling events arrive during the  cooldown period . These events are stacked and then executed when the .
  • When the cooldown period ends, one by once. the stacked operations are aggregated and executed as a single operation
  • Executing this Executing the first stacked operation leads to creating another cooldown period. During this period no scaling event is received, so no new scaling operation is stacked 
  • When this last cooldown period ends, the last stacked operation is popped from the stack and triggeredscheduler has finished his scaling job

Compatibility, Deprecation, and Migration Plan

...

DataStreamAllroundTestProgram

Rejected Alternatives

NoneWhen scaling operations are popped from the stack, they are not executed one by once at a sclaing-cooldown-period pace to avoid adding too much delay in scaling.