address review feedback

This commit is contained in:
James DeFelice 2020-02-13 11:43:09 -06:00 committed by James DeFelice
parent 6f8dfdfb0e
commit a4230055f3

View File

@ -397,13 +397,13 @@ func (d dockerOpt) GetKV() (string, string) {
return d.key, d.value return d.key, d.value
} }
// writeLimiter limits the total output written across one or more streams. // sharedWriteLimiter limits the total output written across one or more streams.
type writeLimiter struct { type sharedWriteLimiter struct {
delegate io.Writer delegate io.Writer
limit *int64 limit *int64
} }
func (w writeLimiter) Write(p []byte) (int, error) { func (w sharedWriteLimiter) Write(p []byte) (int, error) {
if len(p) == 0 { if len(p) == 0 {
return 0, nil return 0, nil
} }
@ -418,11 +418,7 @@ func (w writeLimiter) Write(p []byte) (int, error) {
} }
n, err := w.delegate.Write(p) n, err := w.delegate.Write(p)
if n > 0 { if n > 0 {
newLimit := limit - int64(n) atomic.AddInt64(w.limit, -1*int64(n))
for !atomic.CompareAndSwapInt64(w.limit, limit, newLimit) {
limit = atomic.LoadInt64(w.limit)
newLimit = limit - int64(n)
}
} }
if err == nil && truncated { if err == nil && truncated {
err = errMaximumWrite err = errMaximumWrite
@ -434,7 +430,7 @@ func limitedWriter(w io.Writer, limit *int64) io.Writer {
if w == nil { if w == nil {
return nil return nil
} }
return &writeLimiter{ return &sharedWriteLimiter{
delegate: w, delegate: w,
limit: limit, limit: limit,
} }