client-go-helper icon indicating copy to clipboard operation
client-go-helper copied to clipboard

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

Open pierreblais opened this issue 1 year ago • 0 comments

Context

The function InitClient from package client:

https://github.com/ica10888/client-go-helper/blob/c668a680cbe8d94edda1192d672e8dbd1dfdbd28/pkg/kubectl/client/client.go#L17

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
}

pierreblais avatar Feb 13 '23 13:02 pierreblais