Make namespace deletion asynchronous
Instead of deleting a namespace synchronously as before, we now mark the namespace for deletion, disable it, and rename it. A worker then comes along and deletes the namespace in the background. This results in a *significantly* better user experience, as the namespace deletion operation now "completes" in under a second, where before it could take 10s of minutes at the worse. Fixes https://jira.coreos.com/browse/QUAY-838
This commit is contained in:
parent
d9015a1863
commit
8bc55a5676
21 changed files with 244 additions and 129 deletions
|
@ -0,0 +1,39 @@
|
|||
"""Add deleted namespace table
|
||||
|
||||
Revision ID: b4c2d45bc132
|
||||
Revises: 152edccba18c
|
||||
Create Date: 2018-02-27 11:43:02.329941
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'b4c2d45bc132'
|
||||
down_revision = '152edccba18c'
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
def upgrade(tables):
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.create_table('deletednamespace',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('namespace_id', sa.Integer(), nullable=False),
|
||||
sa.Column('marked', sa.DateTime(), nullable=False),
|
||||
sa.Column('original_username', sa.String(length=255), nullable=False),
|
||||
sa.Column('original_email', sa.String(length=255), nullable=False),
|
||||
sa.Column('queue_id', sa.String(length=255), nullable=True),
|
||||
sa.ForeignKeyConstraint(['namespace_id'], ['user.id'], name=op.f('fk_deletednamespace_namespace_id_user')),
|
||||
sa.PrimaryKeyConstraint('id', name=op.f('pk_deletednamespace'))
|
||||
)
|
||||
op.create_index('deletednamespace_namespace_id', 'deletednamespace', ['namespace_id'], unique=True)
|
||||
op.create_index('deletednamespace_original_email', 'deletednamespace', ['original_email'], unique=False)
|
||||
op.create_index('deletednamespace_original_username', 'deletednamespace', ['original_username'], unique=False)
|
||||
op.create_index('deletednamespace_queue_id', 'deletednamespace', ['queue_id'], unique=False)
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade(tables):
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_table('deletednamespace')
|
||||
# ### end Alembic commands ###
|
Reference in a new issue