distribution/registry/storage
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
..
cache Update registry to use WithName for creating Named values 2017-01-18 13:56:56 -08:00
driver Fix signalling Wait in regulator.enter 2017-06-02 15:41:55 +02:00
blob_test.go registry/storage: clean up zero-length blob comments 2017-01-27 15:28:30 -08:00
blobcachemetrics.go Open cache interface 2015-05-15 17:56:28 -07:00
blobserver.go digest: migrate to opencontainers/go-digest 2017-01-06 15:42:03 -08:00
blobstore.go digest: migrate to opencontainers/go-digest 2017-01-06 15:42:03 -08:00
blobwriter.go registry/storage: clean up zero-length blob comments 2017-01-27 15:28:30 -08:00
blobwriter_nonresumable.go If resumable digest support is disabled, detct this when closing the blobwriter 2016-06-13 17:35:06 -07:00
blobwriter_resumable.go Adds new storagedriver.FileWriter interface 2016-03-08 16:37:44 -08:00
catalog.go Improve catalog enumerate runtime by an order of magnitude 2016-08-09 17:42:26 -07:00
catalog_test.go Update registry to use WithName for creating Named values 2017-01-18 13:56:56 -08:00
digester_resumable_test.go digest: migrate to opencontainers/go-digest 2017-01-06 15:42:03 -08:00
doc.go Move storage package under registry package 2015-02-11 12:43:04 -08:00
filereader.go Adds new storagedriver.FileWriter interface 2016-03-08 16:37:44 -08:00
filereader_test.go digest: migrate to opencontainers/go-digest 2017-01-06 15:42:03 -08:00
garbagecollect.go Update registry to use WithName for creating Named values 2017-01-18 13:56:56 -08:00
garbagecollect_test.go Update registry to use WithName for creating Named values 2017-01-18 13:56:56 -08:00
linkedblobstore.go digest: migrate to opencontainers/go-digest 2017-01-06 15:42:03 -08:00
linkedblobstore_test.go Update registry to use WithName for creating Named values 2017-01-18 13:56:56 -08:00
manifestlisthandler.go digest: migrate to opencontainers/go-digest 2017-01-06 15:42:03 -08:00
manifeststore.go digest: migrate to opencontainers/go-digest 2017-01-06 15:42:03 -08:00
manifeststore_test.go Update registry to use WithName for creating Named values 2017-01-18 13:56:56 -08:00
paths.go digest: migrate to opencontainers/go-digest 2017-01-06 15:42:03 -08:00
paths_test.go digest: migrate to opencontainers/go-digest 2017-01-06 15:42:03 -08:00
purgeuploads.go fixing acronyms case 2017-01-31 01:29:30 +08:00
purgeuploads_test.go Remove pathMapper object 2015-08-17 18:51:05 -07:00
registry.go Fix the build. 2016-07-21 17:16:47 -07:00
schema2manifesthandler.go digest: migrate to opencontainers/go-digest 2017-01-06 15:42:03 -08:00
schema2manifesthandler_test.go Update schema2 builder to take media type 2016-12-14 16:17:20 -08:00
signedmanifesthandler.go digest: migrate to opencontainers/go-digest 2017-01-06 15:42:03 -08:00
tagstore.go digest: migrate to opencontainers/go-digest 2017-01-06 15:42:03 -08:00
tagstore_test.go Update registry to use WithName for creating Named values 2017-01-18 13:56:56 -08:00
util.go Refactor Blob Service API 2015-05-15 17:05:18 -07:00
vacuum.go digest: migrate to opencontainers/go-digest 2017-01-06 15:42:03 -08:00
walk.go storage: enforce sorted traversal during Walk 2015-12-01 16:25:30 -08:00
walk_test.go Fix some typos in comments and strings 2016-02-23 22:33:38 +01:00