FailedChanges

Summary

  1. UPSTREAM: docker/distribution: 2299: Fix signalling Wait in (commit: f4d649e) (details)
Commit f4d649edd695937b76cc30281c8ea5297853f2e0 by obulatov
UPSTREAM: docker/distribution: 2299: Fix signalling Wait in
regulator.enter
In some conditions, regulator.exit may not send a signal to blocked
regulator.enter.
Let's assume we are in the critical section of regulator.exit and
r.available is equal to 0. And there are three more gorotines. One
goroutine also executes regulator.exit and waits for the lock. Rest run
regulator.enter and wait for the signal.
We send the signal, and after releasing the lock, there will be lock
contention:
  1. Wait from regulator.enter
2. Lock from regulator.exit
If the winner is Lock from regulator.exit, we will not send another
signal to unlock the second Wait.
Signed-off-by: Oleg Bulatov <obulatov@redhat.com>
(commit: f4d649e)
The file was modifiedvendor/github.com/docker/distribution/registry/storage/driver/base/regulator.go (diff)
The file was addedvendor/github.com/docker/distribution/registry/storage/driver/base/regulator_test.go