From 0ec2b6ca60f4e029177919638487ba5d438d260b Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Fri, 26 Mar 2021 12:17:16 +0100 Subject: [PATCH] Return ctx.Err() on ctx.Done() --- pkg/com/bulker.go | 4 ++-- pkg/driver/driver.go | 2 +- pkg/icingadb/delta.go | 4 ++-- pkg/retry/retry.go | 4 +++- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/pkg/com/bulker.go b/pkg/com/bulker.go index 3118e80a..aebe4ecc 100644 --- a/pkg/com/bulker.go +++ b/pkg/com/bulker.go @@ -50,7 +50,7 @@ func (b *Bulker) run(ch <-chan contracts.Entity, count int) { bufCh <- v case <-ctx.Done(): - return nil + return ctx.Err() } } }) @@ -74,7 +74,7 @@ func (b *Bulker) run(ch <-chan contracts.Entity, count int) { case <-timeout: drain = false case <-ctx.Done(): - return nil + return ctx.Err() } } diff --git a/pkg/driver/driver.go b/pkg/driver/driver.go index 033a3907..d32f207d 100644 --- a/pkg/driver/driver.go +++ b/pkg/driver/driver.go @@ -46,7 +46,7 @@ func (d Driver) Open(dsn string) (c driver.Conn, err error) { select { case <-ctx.Done(): // Context canceled. - return + return nil, ctx.Err() case <-time.After(sleep): // Wait for backoff duration and continue. } diff --git a/pkg/icingadb/delta.go b/pkg/icingadb/delta.go index a9e9d5a1..46686dfd 100644 --- a/pkg/icingadb/delta.go +++ b/pkg/icingadb/delta.go @@ -80,7 +80,7 @@ func (delta *Delta) start(ctx context.Context, actualCh, desiredCh <-chan contra cnt.Inc() case <-ctx.Done(): - return nil + return ctx.Err() } } }) @@ -116,7 +116,7 @@ func (delta *Delta) start(ctx context.Context, actualCh, desiredCh <-chan contra cnt.Inc() case <-ctx.Done(): - return nil + return ctx.Err() } } }) diff --git a/pkg/retry/retry.go b/pkg/retry/retry.go index b3efe46e..4f7cbd7a 100644 --- a/pkg/retry/retry.go +++ b/pkg/retry/retry.go @@ -30,7 +30,9 @@ func WithBackoff(ctx context.Context, retryableFunc RetryableFunc, retryable IsR select { case <-ctx.Done(): // Context canceled. Return last known error. - // TODO(el): Return ctx.Err() if err is nil? + if err == nil { + err = ctx.Err() + } return case <-time.After(sleep): // Wait for backoff duration and continue.