distribution/registry/storage
Stefan Majewsky 1f03d4e77d [Swift] add simple heuristic to detect incomplete DLOs during read ops
This is similar to waitForSegmentsToShowUp which is called during
Close/Commit. Intuitively, you wouldn't expect missing segments to be a
problem during read operations, since the previous Close/Commit
confirmed that all segments are there.

But due to the distributed nature of Swift, the read request could be
hitting a different storage node of the Swift cluster, where the
segments are still missing.

Load tests on my team's staging Swift cluster have shown this to occur
about once every 100-200 layer uploads when the Swift proxies are under
high load. The retry logic, borrowed from waitForSegmentsToShowUp, fixes
this temporary inconsistency.

Signed-off-by: Stefan Majewsky <stefan.majewsky@sap.com>
2016-07-08 13:47:41 +02:00
..
cache Add support for layers from foreign sources 2016-05-20 12:31:10 -07:00
driver [Swift] add simple heuristic to detect incomplete DLOs during read ops 2016-07-08 13:47:41 +02:00
blob_test.go Merge pull request #1706 from aibaars/registry-size-close 2016-06-13 16:29:35 -07:00
blobcachemetrics.go Open cache interface 2015-05-15 17:56:28 -07:00
blobserver.go Serve blobs when a storage driver supports redirects but are disabled 2015-12-28 11:08:39 -08:00
blobstore.go registry: avoid formatting errors with %#v 2016-07-01 11:30:58 -03:00
blobwriter.go If resumable digest support is disabled, detct this when closing the blobwriter 2016-06-13 17:35:06 -07: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 Implements garbage collection subcommand 2016-02-29 14:15:21 -08:00
catalog_test.go Functional options for NewRegistryWithDriver 2015-08-19 11:06:30 -07: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 fix typos 2016-06-02 23:03:27 +08:00
garbagecollect.go Remove signature store from registry. Return a generated signature for manifest 2016-05-27 13:19:26 -07:00
garbagecollect_test.go Remove signature store from registry. Return a generated signature for manifest 2016-05-27 13:19:26 -07:00
linkedblobstore.go fix typos 2016-06-02 23:03:27 +08:00
manifestlisthandler.go Add support for manifest list ("fat manifest") 2016-01-07 15:26:27 -08:00
manifeststore.go fix typos 2016-06-22 12:40:21 +08:00
manifeststore_test.go Remove signature store from registry. Return a generated signature for manifest 2016-05-27 13:19:26 -07:00
paths.go Remove signature store from registry. Return a generated signature for manifest 2016-05-27 13:19:26 -07:00
paths_test.go Remove signature store from registry. Return a generated signature for manifest 2016-05-27 13:19:26 -07:00
purgeuploads.go Remove pathMapper object 2015-08-17 18:51:05 -07:00
purgeuploads_test.go Remove pathMapper object 2015-08-17 18:51:05 -07:00
registry.go Remove signature store from registry. Return a generated signature for manifest 2016-05-27 13:19:26 -07:00
schema2manifesthandler.go Add support for layers from foreign sources 2016-05-20 12:31:10 -07:00
schema2manifesthandler_test.go Add support for layers from foreign sources 2016-05-20 12:31:10 -07:00
signedmanifesthandler.go Remove signature store from registry. Return a generated signature for manifest 2016-05-27 13:19:26 -07:00
tagstore.go Rename Name method of Repository to Named 2016-02-04 09:55:36 -08:00
tagstore_test.go compare error output in tagstore unit test 2016-02-22 17:34:22 +08:00
util.go Refactor Blob Service API 2015-05-15 17:05:18 -07:00
vacuum.go Implements garbage collection subcommand 2016-02-29 14:15:21 -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