fix dial error when clean up a dead shim
Signed-off-by: lifubang <lifubang@acmcoder.com>
This commit is contained in:
@@ -50,14 +50,8 @@ func NewClient(address string, opts ...ttrpc.ClientOpts) (*Client, error) {
|
||||
return client, nil
|
||||
}
|
||||
|
||||
client, err := connector()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &Client{
|
||||
connector: connector,
|
||||
client: client,
|
||||
}, nil
|
||||
}
|
||||
|
||||
@@ -74,6 +68,12 @@ func (c *Client) Reconnect() error {
|
||||
return errors.New("client is closed")
|
||||
}
|
||||
|
||||
if c.client != nil {
|
||||
if err := c.client.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
client, err := c.connector()
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -84,16 +84,26 @@ func (c *Client) Reconnect() error {
|
||||
}
|
||||
|
||||
// EventsService creates an EventsService client
|
||||
func (c *Client) EventsService() v1.EventsService {
|
||||
return v1.NewEventsClient(c.Client())
|
||||
func (c *Client) EventsService() (v1.EventsService, error) {
|
||||
client, err := c.Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return v1.NewEventsClient(client), nil
|
||||
}
|
||||
|
||||
// Client returns the underlying TTRPC client object
|
||||
func (c *Client) Client() *ttrpc.Client {
|
||||
func (c *Client) Client() (*ttrpc.Client, error) {
|
||||
c.mu.Lock()
|
||||
defer c.mu.Unlock()
|
||||
|
||||
return c.client
|
||||
if c.client == nil {
|
||||
client, err := c.connector()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
c.client = client
|
||||
}
|
||||
return c.client, nil
|
||||
}
|
||||
|
||||
// Close closes the clients TTRPC connection to containerd
|
||||
@@ -102,5 +112,8 @@ func (c *Client) Close() error {
|
||||
defer c.mu.Unlock()
|
||||
|
||||
c.closed = true
|
||||
return c.client.Close()
|
||||
if c.client != nil {
|
||||
return c.client.Close()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user