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 (
|
var (
|
||||||
logger = log.New(os.Stdout, "", 0)
|
logger = log.New(os.Stdout, "", 0)
|
||||||
|
lock = &sync.Mutex{}
|
||||||
_ Client = (*GRPCClient)(nil)
|
_ Client = (*GRPCClient)(nil)
|
||||||
defaultClient Client
|
defaultClient Client
|
||||||
doOnce sync.Once
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Client is the interface for Dapr client implementation.
|
// Client is the interface for Dapr client implementation.
|
||||||
|
@ -209,16 +209,21 @@ func NewClient() (client Client, err error) {
|
||||||
if port == "" {
|
if port == "" {
|
||||||
port = daprPortDefault
|
port = daprPortDefault
|
||||||
}
|
}
|
||||||
var onceErr error
|
if defaultClient != nil {
|
||||||
doOnce.Do(func() {
|
return defaultClient, nil
|
||||||
|
}
|
||||||
|
lock.Lock()
|
||||||
|
defer lock.Unlock()
|
||||||
|
if defaultClient != nil {
|
||||||
|
return defaultClient, nil
|
||||||
|
}
|
||||||
c, err := NewClientWithPort(port)
|
c, err := NewClientWithPort(port)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
onceErr = fmt.Errorf("error creating default client: %w", err)
|
return nil, fmt.Errorf("error creating default client: %w", err)
|
||||||
}
|
}
|
||||||
defaultClient = c
|
defaultClient = c
|
||||||
})
|
|
||||||
|
|
||||||
return defaultClient, onceErr
|
return defaultClient, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewClientWithPort instantiates Dapr using specific gRPC port.
|
// NewClientWithPort instantiates Dapr using specific gRPC port.
|
||||||
|
|
Loading…
Reference in New Issue