Skip to content

Commit

Permalink
fix: panic in cache conversion
Browse files Browse the repository at this point in the history
  • Loading branch information
andyzhangx committed Nov 15, 2022
1 parent d8d65f1 commit 3fe5caf
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 8 deletions.
5 changes: 2 additions & 3 deletions pkg/provider/azure_standard.go
Original file line number Diff line number Diff line change
Expand Up @@ -1240,12 +1240,11 @@ func (as *availabilitySet) getAvailabilitySetByNodeName(nodeName string, crt azc
if err != nil {
return nil, err
}
vmasList := cached.(*sync.Map)

if vmasList == nil {
if cached == nil {
klog.Warning("Couldn't get all vmas from cache")
return nil, nil
}
vmasList := cached.(*sync.Map)

var result *compute.AvailabilitySet
vmasList.Range(func(_, value interface{}) bool {
Expand Down
21 changes: 21 additions & 0 deletions pkg/provider/azure_vmss.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,9 @@ func (ss *ScaleSet) getVMSS(vmssName string, crt azcache.AzureCacheReadType) (*c
if err != nil {
return nil, err
}
if cached == nil {
return nil, nil
}

vmsses := cached.(*sync.Map)
if vmss, ok := vmsses.Load(vmssName); ok {
Expand Down Expand Up @@ -186,6 +189,9 @@ func (ss *ScaleSet) getVmssVMByNodeIdentity(node *nodeIdentity, crt azcache.Azur
if err != nil {
return nil, found, err
}
if cached == nil {
return nil, found, nil
}

virtualMachines := cached.(*sync.Map)
if entry, ok := virtualMachines.Load(nodeName); ok {
Expand Down Expand Up @@ -333,6 +339,9 @@ func (ss *ScaleSet) getVmssVMByInstanceID(resourceGroup, scaleSetName, instanceI
if err != nil {
return nil, false, err
}
if cached == nil {
return nil, false, nil
}

virtualMachines := cached.(*sync.Map)
virtualMachines.Range(func(key, value interface{}) bool {
Expand Down Expand Up @@ -791,6 +800,9 @@ func (ss *ScaleSet) getNodeIdentityByNodeName(nodeName string, crt azcache.Azure
if err != nil {
return nil, err
}
if cached == nil {
return nil, nil
}

vmsses := cached.(*sync.Map)
vmsses.Range(func(key, value interface{}) bool {
Expand Down Expand Up @@ -1690,6 +1702,9 @@ func (ss *ScaleSet) ensureBackendPoolDeletedFromVMSS(backendPoolID, vmSetName st
klog.Errorf("ensureBackendPoolDeletedFromVMSS: failed to get vmss uniform from cache: %v", err)
return err
}
if cachedUniform == nil {
return nil
}
vmssUniformMap := cachedUniform.(*sync.Map)

vmssUniformMap.Range(func(key, value interface{}) bool {
Expand All @@ -1710,6 +1725,9 @@ func (ss *ScaleSet) ensureBackendPoolDeletedFromVMSS(backendPoolID, vmSetName st
klog.Errorf("ensureBackendPoolDeletedFromVMSS: failed to get vmss flex from cache: %v", err)
return err
}
if cachedFlex == nil {
return nil
}
vmssFlexMap := cachedFlex.(*sync.Map)
vmssFlexMap.Range(func(key, value interface{}) bool {
vmssFlex := value.(*compute.VirtualMachineScaleSet)
Expand Down Expand Up @@ -1749,6 +1767,9 @@ func (ss *ScaleSet) ensureBackendPoolDeletedFromVmssUniform(backendPoolID, vmSet
klog.Errorf("ensureBackendPoolDeletedFromVMSS: failed to get vmss uniform from cache: %v", err)
return err
}
if cachedUniform == nil {
return nil
}

vmssUniformMap := cachedUniform.(*sync.Map)
var errorList []error
Expand Down
5 changes: 5 additions & 0 deletions pkg/provider/azure_vmss_cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,11 @@ func (ss *ScaleSet) updateCache(nodeName, resourceGroupName, vmssName, instanceI
vmCache, err := timedCache.Get(cacheKey, azcache.CacheReadTypeUnsafe)
if err != nil {
klog.Errorf("updateCache(%s, %s, %s) failed getting vmCache with error: %v", vmssName, resourceGroupName, nodeName, err)
return nil
}
if vmCache == nil {
klog.Errorf("updateCache(%s, %s, %s) failed getting nil vmCache", vmssName, resourceGroupName, nodeName)
return nil
}

virtualMachines := vmCache.(*sync.Map)
Expand Down
3 changes: 3 additions & 0 deletions pkg/provider/azure_vmssflex.go
Original file line number Diff line number Diff line change
Expand Up @@ -803,6 +803,9 @@ func (fs *FlexScaleSet) ensureBackendPoolDeletedFromVmssFlex(backendPoolID strin
klog.Errorf("ensureBackendPoolDeletedFromVmssFlex: failed to get vmss flex from cache: %v", err)
return err
}
if cached == nil {
return nil
}
vmssFlexes := cached.(*sync.Map)
vmssFlexes.Range(func(key, value interface{}) bool {
vmssFlex := value.(*compute.VirtualMachineScaleSet)
Expand Down
29 changes: 24 additions & 5 deletions pkg/provider/azure_vmssflex_cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,9 @@ func (fs *FlexScaleSet) getNodeNameByVMName(vmName string) (string, error) {
if err != nil {
return "", err
}
if cached == nil {
return "", nil
}
vmssFlexes := cached.(*sync.Map)

vmssFlexes.Range(func(key, value interface{}) bool {
Expand Down Expand Up @@ -181,6 +184,9 @@ func (fs *FlexScaleSet) getNodeVmssFlexID(nodeName string) (string, error) {
if err != nil {
return "", err
}
if cached == nil {
return "", nil
}
vmssFlexes := cached.(*sync.Map)

vmssFlexes.Range(func(key, value interface{}) bool {
Expand Down Expand Up @@ -218,7 +224,9 @@ func (fs *FlexScaleSet) getVmssFlexVM(nodeName string, crt azcache.AzureCacheRea
if err != nil {
return vm, err
}

if cached == nil {
return vm, nil
}
vmMap := cached.(*sync.Map)
cachedVM, ok := vmMap.Load(nodeName)
if !ok {
Expand All @@ -234,7 +242,9 @@ func (fs *FlexScaleSet) getVmssFlexByVmssFlexID(vmssFlexID string, crt azcache.A
if err != nil {
return nil, err
}

if cached == nil {
return nil, nil
}
vmssFlexes := cached.(*sync.Map)
if vmssFlex, ok := vmssFlexes.Load(vmssFlexID); ok {
result := vmssFlex.(*compute.VirtualMachineScaleSet)
Expand All @@ -246,7 +256,9 @@ func (fs *FlexScaleSet) getVmssFlexByVmssFlexID(vmssFlexID string, crt azcache.A
if err != nil {
return nil, err
}

if cached == nil {
return nil, nil
}
vmssFlexes = cached.(*sync.Map)
if vmssFlex, ok := vmssFlexes.Load(vmssFlexID); ok {
result := vmssFlex.(*compute.VirtualMachineScaleSet)
Expand All @@ -272,7 +284,9 @@ func (fs *FlexScaleSet) getVmssFlexIDByName(vmssFlexName string) (string, error)
if err != nil {
return "", err
}

if cached == nil {
return "", nil
}
var targetVmssFlexID string
vmssFlexes := cached.(*sync.Map)
vmssFlexes.Range(func(key, value interface{}) bool {
Expand All @@ -298,6 +312,9 @@ func (fs *FlexScaleSet) getVmssFlexByName(vmssFlexName string) (*compute.Virtual
if err != nil {
return nil, err
}
if cached == nil {
return nil, nil
}

var targetVmssFlex *compute.VirtualMachineScaleSet
vmssFlexes := cached.(*sync.Map)
Expand Down Expand Up @@ -330,7 +347,9 @@ func (fs *FlexScaleSet) DeleteCacheForNode(nodeName string) error {
if err != nil {
return err
}

if cached == nil {
return nil
}
vmMap := cached.(*sync.Map)
vmMap.Delete(nodeName)

Expand Down

0 comments on commit 3fe5caf

Please sign in to comment.