mirror of https://github.com/dapr/go-sdk.git
use lock instead of once to create default client (#341)
Signed-off-by: zhangchao <zchao9100@gmail.com>
This commit is contained in:
parent
d58007df4d
commit
9d3e975bc9
|
@ -51,9 +51,9 @@ const (
|
|||
|
||||
var (
|
||||
logger = log.New(os.Stdout, "", 0)
|
||||
lock = &sync.Mutex{}
|
||||
_ Client = (*GRPCClient)(nil)
|
||||
defaultClient Client
|
||||
doOnce sync.Once
|
||||
)
|
||||
|
||||
// Client is the interface for Dapr client implementation.
|
||||
|
@ -209,16 +209,21 @@ func NewClient() (client Client, err error) {
|
|||
if port == "" {
|
||||
port = daprPortDefault
|
||||
}
|
||||
var onceErr error
|
||||
doOnce.Do(func() {
|
||||
c, err := NewClientWithPort(port)
|
||||
if err != nil {
|
||||
onceErr = fmt.Errorf("error creating default client: %w", err)
|
||||
}
|
||||
defaultClient = c
|
||||
})
|
||||
if defaultClient != nil {
|
||||
return defaultClient, nil
|
||||
}
|
||||
lock.Lock()
|
||||
defer lock.Unlock()
|
||||
if defaultClient != nil {
|
||||
return defaultClient, nil
|
||||
}
|
||||
c, err := NewClientWithPort(port)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error creating default client: %w", err)
|
||||
}
|
||||
defaultClient = c
|
||||
|
||||
return defaultClient, onceErr
|
||||
return defaultClient, nil
|
||||
}
|
||||
|
||||
// NewClientWithPort instantiates Dapr using specific gRPC port.
|
||||
|
|
Loading…
Reference in New Issue