podman-container-tools / podman-container-tools/container-libs
Race condition when "skopeo copy" multiple tags into the same oci:directory at the same time
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 111
- Forks
- 169
- Avg merge
- 1d 6h
- Merged PRs (30d)
- 60
Description
I'm not sure what guarantees does skopeo give with regard to races. See:
marek@mrnew:/tmp$ (skopeo copy docker://registry.fedoraproject.org/fedora:30 oci:image:30 &); (skopeo copy docker://registry.fedoraproject.org/fedora:32 oci:image:32 &); (skopeo copy docker://registry.fedoraproject.org/fedora:33 oci:image:33)
... wait for them to finish...
marek@mrnew:/tmp$ jq . < image/index.json |grep name
"org.opencontainers.image.ref.name": "latest"
"org.opencontainers.image.ref.name": "31"
"org.opencontainers.image.ref.name": "33"
I would expect to see the tag "32" there as well, but I presume it raced with other downloads. Is it expected? Is it okay to run multiple "skopeo copy" into "oci:dir" at the same time?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the three concurrent skopeo copy commands into the same oci:directory, then trace the oci:directory handling in the container libraries. Compare the resulting index.json entries and establish whether concurrent copies are supported; done means the behavior and concurrency guarantee are documented or the missing tag is reliably prevented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- infrastructure
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100