Fix potential nil pointer problem when using multierror pkg (#1311)

This commit is contained in:
Ta-Ching Chen
2019-09-16 11:03:23 +08:00
committed by GitHub
parent 4d654c6fe7
commit 6d3d277cb9
10 changed files with 59 additions and 60 deletions
+9 -10
View File
@@ -21,8 +21,6 @@ import (
"fmt"
"time"
"github.com/fission/fission/pkg/types"
"github.com/fission/fission/pkg/utils"
multierror "github.com/hashicorp/go-multierror"
"go.uber.org/zap"
asv1 "k8s.io/api/autoscaling/v1"
@@ -35,6 +33,8 @@ import (
fv1 "github.com/fission/fission/pkg/apis/fission.io/v1"
"github.com/fission/fission/pkg/executor/util"
"github.com/fission/fission/pkg/types"
"github.com/fission/fission/pkg/utils"
)
const (
@@ -70,9 +70,7 @@ func (deploy *NewDeploy) createOrGetDeployment(fn *fv1.Function, env *fv1.Enviro
}
}
return existingDepl, err
}
if err != nil && k8s_err.IsNotFound(err) {
} else if k8s_err.IsNotFound(err) {
err := deploy.setupRBACObjs(deployNamespace, fn)
if err != nil {
return nil, err
@@ -442,7 +440,7 @@ func (deploy *NewDeploy) waitForDeploy(depl *v1beta1.Deployment, replicas int32,
// cleanupNewdeploy cleans all kubernetes objects related to function
func (deploy *NewDeploy) cleanupNewdeploy(ns string, name string) error {
var multierr *multierror.Error
result := &multierror.Error{}
err := deploy.deleteSvc(ns, name)
if err != nil {
@@ -450,7 +448,7 @@ func (deploy *NewDeploy) cleanupNewdeploy(ns string, name string) error {
zap.Error(err),
zap.String("function_name", name),
zap.String("function_namespace", ns))
multierror.Append(multierr, err)
result = multierror.Append(result, err)
}
err = deploy.deleteHpa(ns, name)
@@ -459,7 +457,7 @@ func (deploy *NewDeploy) cleanupNewdeploy(ns string, name string) error {
zap.Error(err),
zap.String("function_name", name),
zap.String("function_namespace", ns))
multierror.Append(multierr, err)
result = multierror.Append(result, err)
}
err = deploy.deleteDeployment(ns, name)
@@ -468,7 +466,8 @@ func (deploy *NewDeploy) cleanupNewdeploy(ns string, name string) error {
zap.Error(err),
zap.String("function_name", name),
zap.String("function_namespace", ns))
multierror.Append(multierr, err)
result = multierror.Append(result, err)
}
return multierr.ErrorOrNil()
return result.ErrorOrNil()
}
+1 -1
View File
@@ -558,7 +558,7 @@ func (deploy *NewDeploy) updateFuncDeployment(fn *fv1.Function, env *fv1.Environ
}
func (deploy *NewDeploy) fnDelete(fn *fv1.Function) error {
var multierr *multierror.Error
multierr := &multierror.Error{}
// GetByFunction uses resource version as part of cache key, however,
// the resource version in function metadata will be changed when a function
+1 -1
View File
@@ -471,7 +471,7 @@ func (gp *GenericPool) waitForReadyPod() error {
// Since even single pod is not ready, choosing the first pod to inspect is a good approximation. In future this can be done better
pod := podList.Items[0]
var multierr *multierror.Error
multierr := &multierror.Error{}
for _, cStatus := range pod.Status.ContainerStatuses {
if cStatus.Ready != true {
multierr = multierror.Append(multierr, errors.New(fmt.Sprintf("%v: %v", cStatus.State.Waiting.Reason, cStatus.State.Waiting.Message)))
+4 -4
View File
@@ -73,7 +73,7 @@ func MergePodSpec(srcPodSpec *apiv1.PodSpec, targetPodSpec *apiv1.PodSpec) error
return nil
}
var multierr *multierror.Error
multierr := &multierror.Error{}
// Get item from spec, if they exist in deployment - merge, else append
// Same pattern for all lists (Mergo can not handle lists)
@@ -155,7 +155,7 @@ func mergeContainerLists(srcPodSpec *apiv1.PodSpec, targetPodSpec *apiv1.PodSpec
targetContainers[c.Name] = c
}
var multierr *multierror.Error
multierr := &multierror.Error{}
for _, c := range srcPodSpec.Containers {
container, ok := targetContainers[c.Name]
if ok {
@@ -179,7 +179,7 @@ func mergeInitContainerList(srcPodSpec *apiv1.PodSpec, targetPodSpec *apiv1.PodS
targetContainers[c.Name] = c
}
var multierr *multierror.Error
multierr := &multierror.Error{}
for _, c := range srcPodSpec.InitContainers {
container, ok := targetContainers[c.Name]
if ok {
@@ -202,7 +202,7 @@ func mergeVolumeLists(srcPodSpec *apiv1.PodSpec, targetPodSpec *apiv1.PodSpec) e
specVolumes[vol.Name] = vol
}
var multierr *multierror.Error
multierr := &multierror.Error{}
for _, vol := range srcPodSpec.Volumes {
_, ok := specVolumes[vol.Name]
if ok {