Skip to content

Error should be returned in case Do func failled while init client #2

@pierreblais

Description

@pierreblais

Context

The function InitClient from package client:

func InitClient() (*kubernetes.Clientset, error) {

Actual behavior

// use sync.Once, so clientset can only init once
func InitClient() (*kubernetes.Clientset, error) {
	var once sync.Once
	var clientset *kubernetes.Clientset
	once.Do(func() {
		log.Print("start doInit()")
		clientset, _ = doInit()
	})
	return clientset, nil
}

Here, if the function once.Do failled because of doInit function, the error isn't catched.

Suggestion

// use sync.Once, so clientset can only init once
func InitClient() (*kubernetes.Clientset, error) {
	var once sync.Once
	var clientset *kubernetes.Clientset
        var err error
	once.Do(func() {
		log.Print("start doInit()")
		clientset, err = doInit()
	})
        if err != nil {
		return nil, err
	}
	return clientset, nil
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions