зеркало из https://github.com/microsoft/docker.git
Fix parallel push of the same image to different registries
Layer uploads are deduplicated by a "key" made up of the layer DiffID and the repository name. The repository name being used to form this key was a remote version of the name that didn't include the name of the registry. Consequently, pushes of the same layer in a repository with the same remote name to different registries would wrongly be deduplicated. Correct the key by using the full name of the repository, which includes the registry hostname as well as the image's name. Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
This commit is contained in:
Родитель
8510adf8c8
Коммит
1333ef3ca3
|
@ -137,6 +137,7 @@ func (p *v2Pusher) pushV2Tag(ctx context.Context, ref reference.NamedTagged, ima
|
|||
descriptorTemplate := v2PushDescriptor{
|
||||
v2MetadataService: p.v2MetadataService,
|
||||
repoInfo: p.repoInfo,
|
||||
ref: p.ref,
|
||||
repo: p.repo,
|
||||
pushState: &p.pushState,
|
||||
}
|
||||
|
@ -222,13 +223,14 @@ type v2PushDescriptor struct {
|
|||
layer layer.Layer
|
||||
v2MetadataService *metadata.V2MetadataService
|
||||
repoInfo reference.Named
|
||||
ref reference.Named
|
||||
repo distribution.Repository
|
||||
pushState *pushState
|
||||
remoteDescriptor distribution.Descriptor
|
||||
}
|
||||
|
||||
func (pd *v2PushDescriptor) Key() string {
|
||||
return "v2push:" + pd.repo.Named().Name() + " " + pd.layer.DiffID().String()
|
||||
return "v2push:" + pd.ref.FullName() + " " + pd.layer.DiffID().String()
|
||||
}
|
||||
|
||||
func (pd *v2PushDescriptor) ID() string {
|
||||
|
|
Загрузка…
Ссылка в новой задаче