@@ -44,9 +44,9 @@ const (
4444)
4545
4646var virtualMachinesStatusCache struct {
47- lastRefresh time.Time
47+ lastRefresh map [ string ] time.Time
4848 mutex sync.Mutex
49- virtualMachines []compute.VirtualMachine
49+ virtualMachines map [ string ] []compute.VirtualMachine
5050}
5151
5252// AgentPool implements NodeGroup interface for agent pools deployed by aks-engine.
@@ -133,22 +133,36 @@ func (as *AgentPool) MaxSize() int {
133133func (as * AgentPool ) getVirtualMachinesFromCache () ([]compute.VirtualMachine , error ) {
134134 virtualMachinesStatusCache .mutex .Lock ()
135135 defer virtualMachinesStatusCache .mutex .Unlock ()
136+ klog .V (4 ).Infof ("getVirtualMachinesFromCache: starts for %+v" , as )
136137
137- if virtualMachinesStatusCache .lastRefresh .Add (vmInstancesRefreshPeriod ).After (time .Now ()) {
138- return virtualMachinesStatusCache .virtualMachines , nil
138+ if virtualMachinesStatusCache .virtualMachines == nil {
139+ klog .V (4 ).Infof ("getVirtualMachinesFromCache: initialize vm cache" )
140+ virtualMachinesStatusCache .virtualMachines = make (map [string ][]compute.VirtualMachine )
141+ }
142+ if virtualMachinesStatusCache .lastRefresh == nil {
143+ klog .V (4 ).Infof ("getVirtualMachinesFromCache: initialize last refresh time cache" )
144+ virtualMachinesStatusCache .lastRefresh = make (map [string ]time.Time )
139145 }
140146
147+ if virtualMachinesStatusCache .lastRefresh [as .Id ()].Add (vmInstancesRefreshPeriod ).After (time .Now ()) {
148+ klog .V (4 ).Infof ("getVirtualMachinesFromCache: get vms from cache" )
149+ return virtualMachinesStatusCache .virtualMachines [as .Id ()], nil
150+ }
151+ klog .V (4 ).Infof ("getVirtualMachinesFromCache: get vms from API" )
141152 vms , err := as .GetVirtualMachines ()
153+ klog .V (4 ).Infof ("getVirtualMachinesFromCache: got vms from API %+v" , vms )
154+
142155 if err != nil {
143156 if isAzureRequestsThrottled (err ) {
144157 klog .Warningf ("getAllVirtualMachines: throttling with message %v, would return the cached vms" , err )
145- return virtualMachinesStatusCache .virtualMachines , nil
158+ return virtualMachinesStatusCache .virtualMachines [ as . Id ()] , nil
146159 }
147160
148161 return []compute.VirtualMachine {}, err
149162 }
150- virtualMachinesStatusCache .virtualMachines = vms
151- virtualMachinesStatusCache .lastRefresh = time .Now ()
163+
164+ virtualMachinesStatusCache .virtualMachines [as .Id ()] = vms
165+ virtualMachinesStatusCache .lastRefresh [as .Id ()] = time .Now ()
152166
153167 return vms , err
154168}
0 commit comments