From 762cd56e646b1ab308630c396c34361054c9c6c9 Mon Sep 17 00:00:00 2001 From: Joseph Schorr Date: Tue, 24 Nov 2015 12:44:07 -0500 Subject: [PATCH] Change derived storage to be based on image Fixes #971 --- data/database.py | 16 +++- ...1b_add_new_derivedstorageforimage_table.py | 39 +++++++++ data/model/image.py | 49 ++++++++++- data/model/repository.py | 21 ++++- data/model/storage.py | 76 +----------------- endpoints/verbs.py | 56 +++++++------ test/data/test.db | Bin 535552 -> 1134592 bytes test/fulldbtest.sh | 2 +- test/test_api_usage.py | 4 +- test/test_gc.py | 4 +- 10 files changed, 155 insertions(+), 112 deletions(-) create mode 100644 data/migrations/versions/5a2445ffe21b_add_new_derivedstorageforimage_table.py diff --git a/data/database.py b/data/database.py index 2dc717cbe..77f989b95 100644 --- a/data/database.py +++ b/data/database.py @@ -514,6 +514,7 @@ class ImageStorageSignature(BaseModel): ) +# NOTE: This table is *deprecated* and will be removed in the next PR. class DerivedImageStorage(BaseModel): source = ForeignKeyField(ImageStorage, null=True, related_name='source') derivative = ForeignKeyField(ImageStorage, related_name='derivative') @@ -596,6 +597,19 @@ class Image(BaseModel): _ImageProxy.initialize(Image) +class DerivedStorageForImage(BaseModel): + source_image = ForeignKeyField(Image) + derivative = ForeignKeyField(ImageStorage) + transformation = ForeignKeyField(ImageStorageTransformation) + + class Meta: + database = db + read_slaves = (read_slave,) + indexes = ( + (('source_image', 'transformation'), True), + ) + + class RepositoryTag(BaseModel): name = CharField() image = ForeignKeyField(Image) @@ -831,4 +845,4 @@ all_models = [User, Repository, Image, AccessToken, Role, RepositoryPermission, RepositoryAuthorizedEmail, ImageStorageTransformation, DerivedImageStorage, TeamMemberInvite, ImageStorageSignature, ImageStorageSignatureKind, AccessTokenKind, Star, RepositoryActionCount, TagManifest, UserRegion, - QuayService, QuayRegion, QuayRelease, BlobUpload] + QuayService, QuayRegion, QuayRelease, BlobUpload, DerivedStorageForImage] diff --git a/data/migrations/versions/5a2445ffe21b_add_new_derivedstorageforimage_table.py b/data/migrations/versions/5a2445ffe21b_add_new_derivedstorageforimage_table.py new file mode 100644 index 000000000..b998c2c2c --- /dev/null +++ b/data/migrations/versions/5a2445ffe21b_add_new_derivedstorageforimage_table.py @@ -0,0 +1,39 @@ +"""Add new DerivedStorageForImage table + +Revision ID: 5a2445ffe21b +Revises: 1b2bb93ceb82 +Create Date: 2015-11-24 11:58:02.956687 + +""" + +# revision identifiers, used by Alembic. +revision = '5a2445ffe21b' +down_revision = '1b2bb93ceb82' + +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import mysql + +def upgrade(tables): + ### commands auto generated by Alembic - please adjust! ### + op.create_table('derivedstorageforimage', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('source_image_id', sa.Integer(), nullable=False), + sa.Column('derivative_id', sa.Integer(), nullable=False), + sa.Column('transformation_id', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint(['derivative_id'], ['imagestorage.id'], name=op.f('fk_derivedstorageforimage_derivative_id_imagestorage')), + sa.ForeignKeyConstraint(['source_image_id'], ['image.id'], name=op.f('fk_derivedstorageforimage_source_image_id_image')), + sa.ForeignKeyConstraint(['transformation_id'], ['imagestoragetransformation.id'], name=op.f('fk_derivedstorageforimage_transformation_constraint')), + sa.PrimaryKeyConstraint('id', name=op.f('pk_derivedstorageforimage')) + ) + op.create_index('derivedstorageforimage_derivative_id', 'derivedstorageforimage', ['derivative_id'], unique=False) + op.create_index('derivedstorageforimage_source_image_id', 'derivedstorageforimage', ['source_image_id'], unique=False) + op.create_index('derivedstorageforimage_source_image_id_transformation_id', 'derivedstorageforimage', ['source_image_id', 'transformation_id'], unique=True) + op.create_index('derivedstorageforimage_transformation_id', 'derivedstorageforimage', ['transformation_id'], unique=False) + ### end Alembic commands ### + + +def downgrade(tables): + ### commands auto generated by Alembic - please adjust! ### + op.drop_table('derivedstorageforimage') + ### end Alembic commands ### diff --git a/data/model/image.py b/data/model/image.py index a067b5e76..d3b8082c5 100644 --- a/data/model/image.py +++ b/data/model/image.py @@ -8,8 +8,8 @@ from datetime import datetime from data.model import (DataModelException, db_transaction, _basequery, storage, InvalidImageException, config) from data.database import (Image, Repository, ImageStoragePlacement, Namespace, ImageStorage, - ImageStorageLocation, RepositoryPermission, db_for_update, - db_random_func) + ImageStorageLocation, RepositoryPermission, DerivedStorageForImage, + ImageStorageTransformation, db_random_func, db_for_update) logger = logging.getLogger(__name__) @@ -542,3 +542,48 @@ def set_secscan_status(image, indexed, version): .update(security_indexed=indexed, security_indexed_engine=version) .where(Image.id << ids_to_update) .execute()) + + +def find_or_create_derived_storage(source_image, transformation_name, preferred_location): + existing = find_derived_storage_for_image(source_image, transformation_name) + if existing is not None: + return existing + + logger.debug('Creating storage dervied from source image: %s', source_image.id) + trans = ImageStorageTransformation.get(name=transformation_name) + new_storage = storage.create_v1_storage(preferred_location) + DerivedStorageForImage.create(source_image=source_image, derivative=new_storage, + transformation=trans) + return new_storage + + +def find_derived_storage_for_image(source_image, transformation_name): + try: + found = (ImageStorage + .select(ImageStorage, DerivedStorageForImage) + .join(DerivedStorageForImage) + .join(ImageStorageTransformation) + .where(DerivedStorageForImage.source_image == source_image, + ImageStorageTransformation.name == transformation_name) + .get()) + + found.locations = {placement.location.name for placement in found.imagestorageplacement_set} + return found + except ImageStorage.DoesNotExist: + return None + + +def delete_derived_storage_by_uuid(storage_uuid): + try: + image_storage = storage.get_storage_by_uuid(storage_uuid) + except InvalidImageException: + return + + try: + DerivedStorageForImage.get(derivative=image_storage) + except DerivedStorageForImage.DoesNotExist: + return + + image_storage.delete_instance(recursive=True) + + diff --git a/data/model/repository.py b/data/model/repository.py index c2e1b74d6..6b9ea7f39 100644 --- a/data/model/repository.py +++ b/data/model/repository.py @@ -7,8 +7,8 @@ from data.model import (DataModelException, tag, db_transaction, storage, image, _basequery, config) from data.database import (Repository, Namespace, RepositoryTag, Star, Image, ImageStorage, User, Visibility, RepositoryPermission, TupleSelector, RepositoryActionCount, - Role, RepositoryAuthorizedEmail, TagManifest, db_for_update, - get_epoch_timestamp, db_random_func) + Role, RepositoryAuthorizedEmail, TagManifest, DerivedStorageForImage, + db_for_update, get_epoch_timestamp, db_random_func) logger = logging.getLogger(__name__) @@ -108,7 +108,7 @@ def garbage_collect_repository(namespace_name, repository_name): def garbage_collect_repo(repo): logger.debug('Garbage collecting repository %s', repo.id) - storage_id_whitelist = {} + storage_id_whitelist = set() tag.garbage_collect_tags(repo) with db_transaction(): @@ -142,6 +142,21 @@ def garbage_collect_repo(repo): if len(to_remove) > 0: logger.info('Cleaning up unreferenced images: %s', to_remove) storage_id_whitelist = {images_to_storages[to_remove_id] for to_remove_id in to_remove} + + # Lookup any derived images for the images to remove. + derived = DerivedStorageForImage.select().where( + DerivedStorageForImage.source_image << to_remove) + + has_derived = False + for derived_image in derived: + has_derived = True + storage_id_whitelist.add(derived_image.derivative_id) + + # Delete any derived images and the images themselves. + if has_derived: + DerivedStorageForImage.delete().where( + DerivedStorageForImage.source_image << to_remove).execute() + Image.delete().where(Image.id << to_remove).execute() if len(to_remove) > 0: diff --git a/data/model/storage.py b/data/model/storage.py index 143cb5d1c..5cc18b61f 100644 --- a/data/model/storage.py +++ b/data/model/storage.py @@ -3,7 +3,7 @@ import logging from peewee import JOIN_LEFT_OUTER, fn, SQL from data.model import config, db_transaction, InvalidImageException -from data.database import (ImageStorage, Image, DerivedImageStorage, ImageStoragePlacement, +from data.database import (ImageStorage, Image, DerivedStorageForImage, ImageStoragePlacement, ImageStorageLocation, ImageStorageTransformation, ImageStorageSignature, ImageStorageSignatureKind, Repository, Namespace) @@ -17,18 +17,6 @@ def add_storage_placement(storage, location_name): ImageStoragePlacement.create(location=location, storage=storage) -def find_or_create_derived_storage(source, transformation_name, preferred_location): - existing = find_derived_storage(source, transformation_name) - if existing is not None: - return existing - - logger.debug('Creating storage dervied from source: %s', source.uuid) - trans = ImageStorageTransformation.get(name=transformation_name) - new_storage = create_v1_storage(preferred_location) - DerivedImageStorage.create(source=source, derivative=new_storage, transformation=trans) - return new_storage - - def garbage_collect_storage(storage_id_whitelist): if len(storage_id_whitelist) == 0: return @@ -42,37 +30,11 @@ def garbage_collect_storage(storage_id_whitelist): .switch(ImageStorage) .join(Image, JOIN_LEFT_OUTER) .switch(ImageStorage) - .join(DerivedImageStorage, JOIN_LEFT_OUTER, - on=(ImageStorage.id == DerivedImageStorage.derivative)) + .join(DerivedStorageForImage, JOIN_LEFT_OUTER, + on=(ImageStorage.id == DerivedStorageForImage.derivative)) .where(ImageStorage.id << list(candidates)) .group_by(*group_by) - .having((fn.Count(Image.id) == 0) & (fn.Count(DerivedImageStorage.id) == 0))) - - # Note: We remove the derived image storage in its own transaction as a way to reduce the - # time that the transaction holds on the database indicies. This could result in a derived - # image storage being deleted for an image storage which is later reused during this time, - # but since these are caches anyway, it isn't terrible and worth the tradeoff (for now). - logger.debug('Garbage collecting derived storage from candidates: %s', storage_id_whitelist) - with db_transaction(): - # Find out which derived storages will be removed, and add them to the whitelist - # The comma after ImageStorage.id is VERY important, it makes it a tuple, which is a sequence - orphaned_from_candidates = list(orphaned_storage_query(ImageStorage.select(ImageStorage.id), - storage_id_whitelist, - (ImageStorage.id,))) - - if len(orphaned_from_candidates) > 0: - derived_to_remove = (ImageStorage - .select(ImageStorage.id) - .join(DerivedImageStorage, - on=(ImageStorage.id == DerivedImageStorage.derivative)) - .where(DerivedImageStorage.source << orphaned_from_candidates)) - storage_id_whitelist.update({derived.id for derived in derived_to_remove}) - - # Remove the dervived image storages with sources of orphaned storages - (DerivedImageStorage - .delete() - .where(DerivedImageStorage.source << orphaned_from_candidates) - .execute()) + .having((fn.Count(Image.id) == 0) & (fn.Count(DerivedStorageForImage.id) == 0))) # Note: Both of these deletes must occur in the same transaction (unfortunately) because a # storage without any placement is invalid, and a placement cannot exist without a storage. @@ -151,36 +113,6 @@ def lookup_storage_signature(storage, signature_kind): return None -def find_derived_storage(source, transformation_name): - try: - found = (ImageStorage - .select(ImageStorage, DerivedImageStorage) - .join(DerivedImageStorage, on=(ImageStorage.id == DerivedImageStorage.derivative)) - .join(ImageStorageTransformation) - .where(DerivedImageStorage.source == source, - ImageStorageTransformation.name == transformation_name) - .get()) - - found.locations = {placement.location.name for placement in found.imagestorageplacement_set} - return found - except ImageStorage.DoesNotExist: - return None - - -def delete_derived_storage_by_uuid(storage_uuid): - try: - image_storage = get_storage_by_uuid(storage_uuid) - except InvalidImageException: - return - - try: - DerivedImageStorage.get(derivative=image_storage) - except DerivedImageStorage.DoesNotExist: - return - - image_storage.delete_instance(recursive=True) - - def _get_storage(query_modifier): query = (ImageStoragePlacement .select(ImageStoragePlacement, ImageStorage, ImageStorageLocation) diff --git a/endpoints/verbs.py b/endpoints/verbs.py index 224ac082b..c0bb5fc27 100644 --- a/endpoints/verbs.py +++ b/endpoints/verbs.py @@ -1,7 +1,6 @@ import logging import json import hashlib -import uuid from flask import redirect, Blueprint, abort, send_file, make_response @@ -86,7 +85,7 @@ def _write_synthetic_image_to_storage(verb, linked_storage_uuid, linked_location logger.debug('Exception when building %s image %s: %s', verb, linked_storage_uuid, ex) with database.UseThenDisconnect(app.config): - model.storage.delete_derived_storage_by_uuid(linked_storage_uuid) + model.image.delete_derived_storage_by_uuid(linked_storage_uuid) queue_file.add_exception_handler(handle_exception) @@ -137,10 +136,10 @@ def _repo_verb_signature(namespace, repository, tag, verb, checker=None, **kwarg # Verify that the image exists and that we have access to it. store = Storage(app) result = _verify_repo_verb(store, namespace, repository, tag, verb, checker) - (repo_image, tag_image, image_json) = result + (repo_image, _, _) = result # Lookup the derived image storage for the verb. - derived = model.storage.find_derived_storage(repo_image.storage, verb) + derived = model.image.find_derived_storage_for_image(repo_image, verb) if derived is None or derived.uploading: return make_response('', 202) @@ -166,27 +165,26 @@ def _repo_verb(namespace, repository, tag, verb, formatter, sign=False, checker= # Log the action. track_and_log('repo_verb', repo_image.repository, tag=tag, verb=verb, **kwargs) - # Lookup/create the derived image storage for the verb. - #derived = model.storage.find_or_create_derived_storage(repo_image.storage, verb, - # store.preferred_locations[0]) + # Lookup/create the derived image storage for the verb and repo image. + derived = model.image.find_or_create_derived_storage(repo_image, verb, + store.preferred_locations[0]) - #if not derived.uploading: - # logger.debug('Derived %s image %s exists in storage', verb, derived.uuid) - # derived_layer_path = model.storage.get_layer_path(derived) - # download_url = store.get_direct_download_url(derived.locations, derived_layer_path) - # if download_url: - # logger.debug('Redirecting to download URL for derived %s image %s', verb, derived.uuid) - # return redirect(download_url) + if not derived.uploading: + logger.debug('Derived %s image %s exists in storage', verb, derived.uuid) + derived_layer_path = model.storage.get_layer_path(derived) + download_url = store.get_direct_download_url(derived.locations, derived_layer_path) + if download_url: + logger.debug('Redirecting to download URL for derived %s image %s', verb, derived.uuid) + return redirect(download_url) - # # Close the database handle here for this process before we send the long download. - # database.close_db_filter(None) + # Close the database handle here for this process before we send the long download. + database.close_db_filter(None) - # logger.debug('Sending cached derived %s image %s', verb, derived.uuid) - # return send_file(store.stream_read_file(derived.locations, derived_layer_path)) + logger.debug('Sending cached derived %s image %s', verb, derived.uuid) + return send_file(store.stream_read_file(derived.locations, derived_layer_path)) - derived_uuid = str(uuid.uuid4()) - logger.debug('Building and returning derived %s image %s', verb, derived_uuid) + logger.debug('Building and returning derived %s image %s', verb, derived.uuid) # Load the image's JSON layer. if not image_json: @@ -207,23 +205,23 @@ def _repo_verb(namespace, repository, tag, verb, formatter, sign=False, checker= args, finished=_cleanup) client_queue_file = QueueFile(queue_process.create_queue(), 'client') - #storage_queue_file = QueueFile(queue_process.create_queue(), 'storage') + storage_queue_file = QueueFile(queue_process.create_queue(), 'storage') # If signing is required, add a QueueFile for signing the image as we stream it out. - #signing_queue_file = None - #if sign and signer.name: - # signing_queue_file = QueueFile(queue_process.create_queue(), 'signing') + signing_queue_file = None + if sign and signer.name: + signing_queue_file = QueueFile(queue_process.create_queue(), 'signing') # Start building. queue_process.run() # Start the storage saving. - #storage_args = (verb, derived_uuid, derived.locations, storage_queue_file) - #QueueProcess.run_process(_write_synthetic_image_to_storage, storage_args, finished=_cleanup) + storage_args = (verb, derived.uuid, derived.locations, storage_queue_file) + QueueProcess.run_process(_write_synthetic_image_to_storage, storage_args, finished=_cleanup) - #if sign and signer.name: - # signing_args = (verb, derived_uuid, signing_queue_file) - # QueueProcess.run_process(_sign_sythentic_image, signing_args, finished=_cleanup) + if sign and signer.name: + signing_args = (verb, derived.uuid, signing_queue_file) + QueueProcess.run_process(_sign_sythentic_image, signing_args, finished=_cleanup) # Close the database handle here for this process before we send the long download. database.close_db_filter(None) diff --git a/test/data/test.db b/test/data/test.db index e39fc8a8713cb94478b678254005b0c735d69c43..335b28e341d4ea58e6dd26512ba1e728d5daa50e 100644 GIT binary patch delta 79748 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%0DbvGD&Z% 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�Cwx~ZnvX}1;9v6ppWeAjj+-l`v$OlHwjUGt!n9F4^QPXl;IV5{x2 z+?2c&i7PsV#11hibQ8 z?y#(Z11x^xb(r3OphB%D4%aK!ht;{@bZA*(`R1If4W@5aoH+&VjtD#IySuGPTF5k= zc80lv8q3|dGv9>{kz@9F(ovczgm7}RrhPd)p*cvV9Cg+1VZFWwHLUw^lqZ(O(|Y${n*`&N3tG_rsCKfMn1AY z_$27tYqh;y0;?FIER$5u5PbgO!|OQnwED}xan#=TZdDHEev zkZH8F3n!(zri{93+ou-hgc{rFqTdqHaMMOcbyGAAuqa4Kx8Cxj3T-~k0r&p_h!ViK delta 82054 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 kglEZP~i5GHE#oi8dRYaFv%@J;@AxW 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 diff --git a/test/fulldbtest.sh b/test/fulldbtest.sh index 1da3499af..17a2622e3 100755 --- a/test/fulldbtest.sh +++ b/test/fulldbtest.sh @@ -56,6 +56,6 @@ up_postgres echo '> Running Full Test Suite (postgres)' set +e -run_tests "postgresql://postgres@127.0.0.1/genschema" +run_tests "postgresql://postgres@192.168.99.100/genschema" set -e down_postgres diff --git a/test/test_api_usage.py b/test/test_api_usage.py index 62224e657..11825286d 100644 --- a/test/test_api_usage.py +++ b/test/test_api_usage.py @@ -1568,9 +1568,9 @@ class TestDeleteRepository(ApiTestCase): # Create some repository action count entries. RepositoryActionCount.create(repository=repository, date=datetime.datetime.now(), count=1) RepositoryActionCount.create(repository=repository, - date=datetime.datetime.now() - datetime.timedelta(days=1), count=2) + date=datetime.datetime.now() - datetime.timedelta(days=2), count=2) RepositoryActionCount.create(repository=repository, - date=datetime.datetime.now() - datetime.timedelta(days=3), count=6) + date=datetime.datetime.now() - datetime.timedelta(days=5), count=6) # Delete the repository. self.deleteResponse(Repository, params=dict(repository=self.COMPLEX_REPO)) diff --git a/test/test_gc.py b/test/test_gc.py index 3bbcf3533..8c67e63e4 100644 --- a/test/test_gc.py +++ b/test/test_gc.py @@ -40,8 +40,8 @@ class TestGarbageCollection(unittest.TestCase): image.storage.save() # Create derived images as well. - for i in range(0, 2): - model.storage.find_or_create_derived_storage(image.storage, 'squash', preferred) + model.image.find_or_create_derived_storage(image, 'squash', preferred) + model.image.find_or_create_derived_storage(image, 'aci', preferred) # Add some additional placements to the image. for location_name in ['local_eu']: