-
Notifications
You must be signed in to change notification settings - Fork 44
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make manifest upload less error prone #1212
Comments
Mainly for completeness' sake more solution ideas:
For the specific issue described here, both options may be combined. |
After brainstorming with @mdellweg the suggested approach from his comment will eliminate the tasking load during blob mount #1211 and blob upload. |
ref pulp#1212 In this commit, ephemeral blobs are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after the pushing a final tagged manifest. [noissue]
ref pulp#1212 In this commit, ephemeral blobs are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after the pushing a final tagged manifest. [noissue]
ref pulp#1212 In this commit, ephemeral blobs are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after the pushing a final tagged manifest. [noissue]
ref pulp#1212 In this commit, ephemeral blobs are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after the pushing a final tagged manifest. [noissue]
ref pulp#1212 In this commit, ephemeral blobs are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after the pushing a final tagged manifest. [noissue]
ref pulp#1212 In this commit, ephemeral blobs are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after the pushing a final tagged manifest. [noissue]
ref pulp#1212 In this commit, ephemeral blobs are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after the pushing a final tagged manifest. [noissue]
ref pulp#1212 In this commit, ephemeral blobs are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after the pushing a final tagged manifest. [noissue]
ref pulp#1212 In this commit, ephemeral blobs are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after the pushing a final tagged manifest. [noissue]
In this commit, ephemeral blobs are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after the pushing a final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes pulp#1212
In this commit, ephemeral blobs and manifests are introduced to simplify the concept of the push workflow from the Registry's perspective. The ephemeral blobs are gradually added to the repository without committing. A new repository version is created only after pushing the final tagged manifest. closes #1212
Version
main
Describe the bug
Image push can fail with 429 too many requests.
Client can properly backoff during 429 blob upload 1s,2s,4s,8s,16s (tot 31s) and wait for the task to finish, client does not back off during manifest push. Api is locked only for 3 seconds and if within that time tasks did not complete, client will re-try ( multiple times, podman/skopeo re-tries 3 times by default )by making another request which will lead to another task creation. Only first task will be operational, other subsequent tasks will be no-op.
The overall podman push command will have a non 0 exit code, however the image manifest will be properly uploaded to the registry. It means that task will complete after client will fail
I am not sure what would be best to do.
a) we can lock api for 3+ seconds but this will fail anyway if workers are under load and task will be picked up after 3+ seconds, locking api for long time is not good approach anyway https://github.com/pulp/pulp_container/blob/main/pulp_container/app/utils.py#L130
b) we could check in the existing repo version whether such manifest and tag already are there and not dispatch the task ( which will anyway be no-op). This is also a half solution because first try will anyway fail( task will be dispatched/finish after 3 secs, however on the second try no task will be dispatched and 201 will be returned to the client https://github.com/pulp/pulp_container/blob/main/pulp_container/app/registry_api.py#L1005
c) dispatch task for the manifest upload but do not check it result/wait for it and return 201 https://github.com/pulp/pulp_container/blob/main/pulp_container/app/registry_api.py#L1021 . This is not best either because task might not be picked up for X time and client will not be able to pull from that repo and in adidition will not know why because of misleading 201
d) other
To Reproduce
Expected behavior
A clear and concise description of what you expected to happen.
Additional context
#1211 This behavior exacerbates the overall situation which leads to additional tasks created.
The text was updated successfully, but these errors were encountered: