Change ManifestBlob row creation to be a single batch operation
Should reduce DB roundtrip times and the overall time we spend under the transaction
This commit is contained in:
parent
1f04b3ea03
commit
2ab7ca30d0
1 changed files with 6 additions and 1 deletions
|
@ -612,6 +612,7 @@ def _create_manifest(tag, manifest, storage_id_map):
|
||||||
manifest_bytes=manifest.bytes, media_type=media_type)
|
manifest_bytes=manifest.bytes, media_type=media_type)
|
||||||
ManifestLegacyImage.create(manifest=manifest_row, repository=tag.repository, image=tag.image)
|
ManifestLegacyImage.create(manifest=manifest_row, repository=tag.repository, image=tag.image)
|
||||||
|
|
||||||
|
blobs_to_insert = []
|
||||||
blobs_created = set()
|
blobs_created = set()
|
||||||
for blob_digest in reversed(manifest.blob_digests):
|
for blob_digest in reversed(manifest.blob_digests):
|
||||||
image_storage_id = storage_id_map.get(blob_digest)
|
image_storage_id = storage_id_map.get(blob_digest)
|
||||||
|
@ -622,9 +623,13 @@ def _create_manifest(tag, manifest, storage_id_map):
|
||||||
if image_storage_id in blobs_created:
|
if image_storage_id in blobs_created:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
ManifestBlob.create(manifest=manifest_row, repository=tag.repository, blob=image_storage_id)
|
blobs_to_insert.append(dict(manifest=manifest_row, repository=tag.repository,
|
||||||
|
blob=image_storage_id))
|
||||||
blobs_created.add(image_storage_id)
|
blobs_created.add(image_storage_id)
|
||||||
|
|
||||||
|
if blobs_to_insert:
|
||||||
|
ManifestBlob.insert_many(blobs_to_insert).execute()
|
||||||
|
|
||||||
tag_manifest = TagManifest.create(tag=tag, digest=manifest.digest, json_data=manifest.bytes)
|
tag_manifest = TagManifest.create(tag=tag, digest=manifest.digest, json_data=manifest.bytes)
|
||||||
TagManifestToManifest.create(tag_manifest=tag_manifest, manifest=manifest_row)
|
TagManifestToManifest.create(tag_manifest=tag_manifest, manifest=manifest_row)
|
||||||
return tag_manifest
|
return tag_manifest
|
||||||
|
|
Reference in a new issue