fix dial error when clean up a dead shim

Signed-off-by: lifubang <lifubang@acmcoder.com>
This commit is contained in:
lifubang
2020-03-12 08:24:29 +08:00
parent c6851ace61
commit 488d6194f2
3 changed files with 44 additions and 18 deletions

View File

@@ -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
}