distribution/registry
Oleg Bulatov 258345ba0d 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>
2017-06-02 15:41:55 +02:00
..
api Remove support for X-Forwarded-Port 2017-03-20 16:13:33 -07:00
auth Add test for auth token with "*" action 2017-01-06 16:08:32 -08:00
client Update registry to use WithName for creating Named values 2017-01-18 13:56:56 -08:00
handlers Return early to prevent nil pointer dereference 2017-04-27 14:59:37 +02:00
listener [Server] Listen and serve on a unix socket 2015-05-11 16:00:14 +03:00
middleware Add support for blobAccessController middleware 2016-05-19 14:02:15 +02:00
proxy Update registry to use WithName for creating Named values 2017-01-18 13:56:56 -08:00
storage Fix signalling Wait in regulator.enter 2017-06-02 15:41:55 +02:00
doc.go Move initialization code from main.go to the registry package 2015-09-09 14:39:31 -07:00
registry.go Update logrus vendor 2017-01-05 11:40:18 -08:00
registry_test.go Allow registry clients to connect via http2 2016-08-13 22:07:42 -04:00
root.go Remove signature store from registry. Return a generated signature for manifest 2016-05-27 13:19:26 -07:00