From d350c95b04d594abedaad1846f35304b55194e84 Mon Sep 17 00:00:00 2001 From: Tamir Duberstein Date: Wed, 27 Oct 2021 18:20:05 -0700 Subject: Replace bespoke WaitGroupErr with errgroup PiperOrigin-RevId: 406027220 --- pkg/sync/BUILD | 1 - pkg/sync/wait.go | 58 -------------------------------------------------------- 2 files changed, 59 deletions(-) delete mode 100644 pkg/sync/wait.go (limited to 'pkg/sync') 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 -} -- cgit v1.2.3