diff options
author | Tamir Duberstein <tamird@google.com> | 2021-10-27 18:20:05 -0700 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2021-10-27 18:22:30 -0700 |
commit | d350c95b04d594abedaad1846f35304b55194e84 (patch) | |
tree | 1d0f4294b3b15c608b713ecc69ec4a3b2c34128e /pkg | |
parent | 6078d26588c021d4b78501ad25cb725ff2db797e (diff) |
Replace bespoke WaitGroupErr with errgroup
PiperOrigin-RevId: 406027220
Diffstat (limited to 'pkg')
-rw-r--r-- | pkg/sync/BUILD | 1 | ||||
-rw-r--r-- | pkg/sync/wait.go | 58 |
2 files changed, 0 insertions, 59 deletions
diff --git a/pkg/sync/BUILD b/pkg/sync/BUILD index 517f16329..73791b456 100644 --- a/pkg/sync/BUILD +++ b/pkg/sync/BUILD @@ -26,7 +26,6 @@ go_library( "rwmutex_unsafe.go", "seqcount.go", "sync.go", - "wait.go", ], marshal = False, stateify = False, diff --git a/pkg/sync/wait.go b/pkg/sync/wait.go deleted file mode 100644 index f8e7742a5..000000000 --- a/pkg/sync/wait.go +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2021 The gVisor Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package sync - -// WaitGroupErr is similar to WaitGroup but allows goroutines to report error. -// Only the first error is retained and reported back. -// -// Example usage: -// wg := WaitGroupErr{} -// wg.Add(1) -// go func() { -// defer wg.Done() -// if err := ...; err != nil { -// wg.ReportError(err) -// return -// } -// }() -// return wg.Error() -// -type WaitGroupErr struct { - WaitGroup - - // mu protects firstErr. - mu Mutex - - // firstErr holds the first error reported. nil is no error occurred. - firstErr error -} - -// ReportError reports an error. Note it does not call Done(). -func (w *WaitGroupErr) ReportError(err error) { - w.mu.Lock() - defer w.mu.Unlock() - if w.firstErr == nil { - w.firstErr = err - } -} - -// Error waits for the counter to reach 0 and returns the first reported error -// if any. -func (w *WaitGroupErr) Error() error { - w.Wait() - w.mu.Lock() - defer w.mu.Unlock() - return w.firstErr -} |