moby/distribution
Cory Snider 97921915a8 distribution/xfer: fix download fencepost bug
maxDownloadAttempts maps to the daemon configuration flag

    --max-download-attempts int
      Set the max download attempts for each pull (default 5)

and the daemon configuration machinery interprets a value of 0 as "apply
the default value" and not a valid user value (config validation/
normalization bugs notwithstanding). The intention is clearly that this
configuration value should be an upper limit on the number of times the
daemon should try to download a particular layer before giving up. So it
is surprising to have the configuration value interpreted as a _retry_
limit. The daemon will make up to N+1 attempts to download a layer! This
also means users cannot disable retries even if they wanted to.

Fix the fencepost bug so that max attempts really means max attempts,
not max retries. And fix the fencepost bug with the retry-backoff delay
so that the first backoff is 5s, not 10s.

Signed-off-by: Cory Snider <csnider@mirantis.com>
2023-02-15 12:45:09 -05:00
..
fixtures/validate_manifest Add distribution package 2015-11-24 09:40:24 -08:00
metadata Remove uses of deprecated go-digest.NewDigestFromHex, go-digest.Digest.Hex 2022-11-08 16:42:13 +01:00
utils Add canonical import comment 2018-02-05 16:51:57 -05:00
xfer distribution/xfer: fix download fencepost bug 2023-02-15 12:45:09 -05:00
config.go image: deprecate IDFromDigest() 2023-01-01 12:33:00 +01:00
errors.go distribution: Error when pulling OCI artifacts 2022-11-02 12:51:03 +01:00
errors_test.go distribution: un-export internal errors and error-utilities 2022-04-21 22:53:02 +02:00
manifest.go Validate digest in repo for pull by digest 2022-10-21 01:48:59 +02:00
manifest_test.go Validate digest in repo for pull by digest 2022-10-21 01:48:59 +02:00
pull.go distribution: move newPusher() and newPuller() together with definition 2022-04-21 23:13:39 +02:00
pull_v2.go distribution: checkSupportedMediaType: allow additional media-types 2022-12-02 01:26:06 +01:00
pull_v2_test.go distribution: use types/registry.AuthConfig 2022-07-29 23:05:18 +02:00
pull_v2_unix.go Remove long-deprecated "arm" fallback 2022-11-01 15:31:07 -07:00
pull_v2_windows.go distribution: remove Puller interface, remove redundant V1 checks 2022-04-21 23:11:07 +02:00
push.go distribution: move newPusher() and newPuller() together with definition 2022-04-21 23:13:39 +02:00
push_v2.go Remove reference to "requireRegistryMatch" 2023-01-05 11:28:22 -08:00
push_v2_test.go distribution: use types/registry.AuthConfig 2022-07-29 23:05:18 +02:00
registry.go distribution: checkSupportedMediaType: allow additional media-types 2022-12-02 01:26:06 +01:00
registry_unit_test.go distribution: use types/registry.AuthConfig 2022-07-29 23:05:18 +02:00
repository.go distribution: add GetRepository(), un-export NewV2Repository, ValidateRepoName 2022-04-21 23:12:02 +02:00