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
|
@ -470,13 +470,21 @@ class User(BaseModel):
|
|||
RepositoryNotification, OAuthAuthorizationCode,
|
||||
RepositoryActionCount, TagManifestLabel, Tag,
|
||||
ManifestLabel, BlobUploading, TeamSync,
|
||||
RepositorySearchScore} | beta_classes
|
||||
RepositorySearchScore, DeletedNamespace} | beta_classes
|
||||
delete_instance_filtered(self, User, delete_nullable, skip_transitive_deletes)
|
||||
|
||||
|
||||
Namespace = User.alias()
|
||||
|
||||
|
||||
class DeletedNamespace(BaseModel):
|
||||
namespace = QuayUserField(index=True, allows_robots=False, unique=True)
|
||||
marked = DateTimeField(default=datetime.now)
|
||||
original_username = CharField(index=True)
|
||||
original_email = CharField(index=True)
|
||||
queue_id = CharField(null=True, index=True)
|
||||
|
||||
|
||||
class UserPromptTypes(object):
|
||||
CONFIRM_USERNAME = 'confirm_username'
|
||||
ENTER_NAME = 'enter_name'
|
||||
|
|
Reference in a new issue