WithLease: always return context and done fn
We should never return a nil context because of the way this function is typically used... e.g. ``` ctx, done, err := containerd.WithLease(ctx) ``` If there is an error `ctx` will be nil and any error handling may cause an NPE if it tries to use `ctx`. Signed-off-by: Brian Goff <cpuguy83@gmail.com>
This commit is contained in:
8
lease.go
8
lease.go
@@ -25,11 +25,11 @@ import (
|
||||
|
||||
// WithLease attaches a lease on the context
|
||||
func (c *Client) WithLease(ctx context.Context, opts ...leases.Opt) (context.Context, func(context.Context) error, error) {
|
||||
nop := func(context.Context) error { return nil }
|
||||
|
||||
_, ok := leases.FromContext(ctx)
|
||||
if ok {
|
||||
return ctx, func(context.Context) error {
|
||||
return nil
|
||||
}, nil
|
||||
return ctx, nop, nil
|
||||
}
|
||||
|
||||
ls := c.LeasesService()
|
||||
@@ -44,7 +44,7 @@ func (c *Client) WithLease(ctx context.Context, opts ...leases.Opt) (context.Con
|
||||
|
||||
l, err := ls.Create(ctx, opts...)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
return ctx, nop, err
|
||||
}
|
||||
|
||||
ctx = leases.WithLease(ctx, l.ID)
|
||||
|
||||
Reference in New Issue
Block a user