# HG changeset patch # User RhodeCode Admin # Date 2023-01-05 08:46:07 # Node ID b6a62e17a3ed79b0f7e19185251b9f192403d8b7 # Parent e4b422d50460998bdd30f38e93eac000a450660c db: added index to cache_args column for feaster lookup on cache invalidation diff --git a/rhodecode/__init__.py b/rhodecode/__init__.py --- a/rhodecode/__init__.py +++ b/rhodecode/__init__.py @@ -48,7 +48,7 @@ PYRAMID_SETTINGS = {} EXTENSIONS = {} __version__ = ('.'.join((str(each) for each in VERSION[:3]))) -__dbversion__ = 113 # defines current db version for migrations +__dbversion__ = 114 # defines current db version for migrations __platform__ = platform.system() __license__ = 'AGPLv3, and Commercial License' __author__ = 'RhodeCode GmbH' diff --git a/rhodecode/lib/dbmigrate/versions/114_version_4_28_0.py b/rhodecode/lib/dbmigrate/versions/114_version_4_28_0.py new file mode 100644 --- /dev/null +++ b/rhodecode/lib/dbmigrate/versions/114_version_4_28_0.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- + +import logging +from sqlalchemy import * +from sqlalchemy.engine import reflection + +from alembic.migration import MigrationContext +from alembic.operations import Operations + +from rhodecode.lib.dbmigrate.versions import _reset_base +from rhodecode.model import meta, init_model_encryption + + +log = logging.getLogger(__name__) + + +def _get_indexes_list(migrate_engine, table_name): + inspector = reflection.Inspector.from_engine(migrate_engine) + return inspector.get_indexes(table_name) + + +def upgrade(migrate_engine): + """ + Upgrade operations go here. + Don't create your own engine; bind migrate_engine to your metadata + """ + _reset_base(migrate_engine) + from rhodecode.lib.dbmigrate.schema import db_4_20_0_0 + + init_model_encryption(db_4_20_0_0) + + # make sure we re-create api-keys indexes + + context = MigrationContext.configure(migrate_engine.connect()) + op = Operations(context) + + existing_indexes = _get_indexes_list( + migrate_engine, db_4_20_0_0.CacheKey.__tablename__) + + names = [idx['name'] for idx in existing_indexes] + + with op.batch_alter_table(db_4_20_0_0.CacheKey.__tablename__) as batch_op: + if 'cache_args_idx' not in names: + batch_op.create_index( + 'cache_args_idx', ['cache_args']) + + +def downgrade(migrate_engine): + meta = MetaData() + meta.bind = migrate_engine + + +def fixups(models, _SESSION): + pass diff --git a/rhodecode/model/db.py b/rhodecode/model/db.py --- a/rhodecode/model/db.py +++ b/rhodecode/model/db.py @@ -3654,6 +3654,7 @@ class CacheKey(Base, BaseModel): __table_args__ = ( UniqueConstraint('cache_key'), Index('key_idx', 'cache_key'), + Index('cache_args_idx', 'cache_args'), base_table_args, ) @@ -3661,7 +3662,6 @@ class CacheKey(Base, BaseModel): # namespaces used to register process/thread aware caches REPO_INVALIDATION_NAMESPACE = 'repo_cache:{repo_id}' - SETTINGS_INVALIDATION_NAMESPACE = 'system_settings' cache_id = Column("cache_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) cache_key = Column("cache_key", String(255), nullable=True, unique=None, default=None)