diff --git a/data/database.py b/data/database.py index d3c816cec..d6df63504 100644 --- a/data/database.py +++ b/data/database.py @@ -758,15 +758,21 @@ class BUILD_PHASE(object): class QueueItem(BaseModel): queue_name = CharField(index=True, max_length=1024) body = TextField() - available_after = DateTimeField(default=datetime.utcnow, index=True) - available = BooleanField(default=True, index=True) - processing_expires = DateTimeField(null=True, index=True) - retries_remaining = IntegerField(default=5, index=True) + available_after = DateTimeField(default=datetime.utcnow) + available = BooleanField(default=True) + processing_expires = DateTimeField(null=True) + retries_remaining = IntegerField(default=5) class Meta: database = db read_slaves = (read_slave,) only_save_dirty = True + indexes = ( + (('processing_expires', 'available'), False), + (('processing_expires', 'queue_name', 'available'), False), + (('processing_expires', 'available_after', 'retries_remaining', 'available'), False), + (('processing_expires', 'available_after', 'queue_name', 'retries_remaining', 'available'), False), + ) class RepositoryBuild(BaseModel): diff --git a/data/migrations/versions/f5167870dd66_update_queue_item_table_indices.py b/data/migrations/versions/f5167870dd66_update_queue_item_table_indices.py new file mode 100644 index 000000000..2131de04b --- /dev/null +++ b/data/migrations/versions/f5167870dd66_update_queue_item_table_indices.py @@ -0,0 +1,40 @@ +"""update queue item table indices + +Revision ID: f5167870dd66 +Revises: 45fd8b9869d4 +Create Date: 2016-12-08 17:26:20.333846 + +""" + +# revision identifiers, used by Alembic. +revision = 'f5167870dd66' +down_revision = '45fd8b9869d4' + +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_index('queueitem_processing_expires_available', 'queueitem', ['processing_expires', 'available'], unique=False) + op.create_index('queueitem_pe_aafter_qname_rremaining_available', 'queueitem', ['processing_expires', 'available_after', 'queue_name', 'retries_remaining', 'available'], unique=False) + op.create_index('queueitem_pexpires_aafter_rremaining_available', 'queueitem', ['processing_expires', 'available_after', 'retries_remaining', 'available'], unique=False) + op.create_index('queueitem_processing_expires_queue_name_available', 'queueitem', ['processing_expires', 'queue_name', 'available'], unique=False) + op.drop_index('queueitem_available', table_name='queueitem') + op.drop_index('queueitem_available_after', table_name='queueitem') + op.drop_index('queueitem_processing_expires', table_name='queueitem') + op.drop_index('queueitem_retries_remaining', table_name='queueitem') + ### end Alembic commands ### + + +def downgrade(tables): + ### commands auto generated by Alembic - please adjust! ### + op.create_index('queueitem_retries_remaining', 'queueitem', ['retries_remaining'], unique=False) + op.create_index('queueitem_processing_expires', 'queueitem', ['processing_expires'], unique=False) + op.create_index('queueitem_available_after', 'queueitem', ['available_after'], unique=False) + op.create_index('queueitem_available', 'queueitem', ['available'], unique=False) + op.drop_index('queueitem_processing_expires_queue_name_available', table_name='queueitem') + op.drop_index('queueitem_pexpires_aafter_rremaining_available', table_name='queueitem') + op.drop_index('queueitem_pe_aafter_qname_rremaining_available', table_name='queueitem') + op.drop_index('queueitem_processing_expires_available', table_name='queueitem') + ### end Alembic commands ### diff --git a/test/data/test.db b/test/data/test.db index ab993b22e..25be218ab 100644 Binary files a/test/data/test.db and b/test/data/test.db differ