mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-07-09 21:17:09 +08:00
vendor: github.com/moby/buildkit 6bd81372ad6f (master)
- tests: implement NetNSDetached method
full diff: 6e200afad5...6bd81372ad
Co-authored-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
30
vendor/github.com/moby/buildkit/util/progress/multiwriter.go
generated
vendored
30
vendor/github.com/moby/buildkit/util/progress/multiwriter.go
generated
vendored
@ -36,6 +36,15 @@ func (ps *MultiWriter) Add(pw Writer) {
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
if pws, ok := rw.(*MultiWriter); ok {
|
||||
if pws.contains(ps) {
|
||||
// this would cause a deadlock, so we should panic instead
|
||||
// NOTE: this can be caused by a cycle in the scheduler states,
|
||||
// which is created by a series of unfortunate edge merges
|
||||
panic("multiwriter loop detected")
|
||||
}
|
||||
}
|
||||
|
||||
ps.mu.Lock()
|
||||
plist := make([]*Progress, 0, len(ps.items))
|
||||
plist = append(plist, ps.items...)
|
||||
@ -102,3 +111,24 @@ func (ps *MultiWriter) writeRawProgress(p *Progress) error {
|
||||
func (ps *MultiWriter) Close() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ps *MultiWriter) contains(pw rawProgressWriter) bool {
|
||||
ps.mu.Lock()
|
||||
defer ps.mu.Unlock()
|
||||
_, ok := ps.writers[pw]
|
||||
if ok {
|
||||
return true
|
||||
}
|
||||
|
||||
for w := range ps.writers {
|
||||
w, ok := w.(*MultiWriter)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
if w.contains(pw) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
Reference in New Issue
Block a user