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) | ||||
|     ManifestLegacyImage.create(manifest=manifest_row, repository=tag.repository, image=tag.image) | ||||
| 
 | ||||
|     blobs_to_insert = [] | ||||
|     blobs_created = set() | ||||
|     for blob_digest in reversed(manifest.blob_digests): | ||||
|       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: | ||||
|         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) | ||||
| 
 | ||||
|     if blobs_to_insert: | ||||
|       ManifestBlob.insert_many(blobs_to_insert).execute() | ||||
| 
 | ||||
|     tag_manifest = TagManifest.create(tag=tag, digest=manifest.digest, json_data=manifest.bytes) | ||||
|     TagManifestToManifest.create(tag_manifest=tag_manifest, manifest=manifest_row) | ||||
|     return tag_manifest | ||||
|  |  | |||
		Reference in a new issue