Merge pull request #2366 from coreos-inc/alert-spam-fixes

Small fixes for alert spam
This commit is contained in:
josephschorr 2017-02-22 14:18:18 -05:00 committed by GitHub
commit f7a7d30ec2
13 changed files with 87 additions and 25 deletions

View file

@ -305,13 +305,18 @@ get_epoch_timestamp_ms = lambda: int(time.time() * 1000)
def close_db_filter(_):
if not db.is_closed():
logger.debug('Disconnecting from database.')
db.close()
try:
if not db.is_closed():
logger.debug('Disconnecting from database.')
db.close()
if read_slave.obj is not None and not read_slave.is_closed():
logger.debug('Disconnecting from read slave.')
read_slave.close()
if read_slave.obj is not None and not read_slave.is_closed():
logger.debug('Disconnecting from read slave.')
read_slave.close()
except AttributeError:
# If the database is closed between the time we check on line 309 and db.close() is called on
# 311, then an AttributeError will be raised. Simply eat this exception and continue onward.
pass
class QuayUserField(ForeignKeyField):

View file

@ -96,6 +96,9 @@ class ServiceNameInvalid(DataModelException):
class TagAlreadyCreatedException(DataModelException):
pass
class StaleTagException(DataModelException):
pass
class TooManyLoginAttemptsException(Exception):
def __init__(self, message, retry_after):

View file

@ -54,7 +54,10 @@ def purge_repository(namespace_name, repository_name):
not need to be checked or responded to.
"""
repo = _basequery.get_existing_repository(namespace_name, repository_name)
try:
repo = _basequery.get_existing_repository(namespace_name, repository_name)
except Repository.DoesNotExist:
return False
# Delete all tags to allow gc to reclaim storage
previously_referenced = tag.purge_all_tags(repo)
@ -74,7 +77,11 @@ def purge_repository(namespace_name, repository_name):
return False
# Delete the rest of the repository metadata
fetched = _basequery.get_existing_repository(namespace_name, repository_name)
try:
fetched = _basequery.get_existing_repository(namespace_name, repository_name)
except Repository.DoesNotExist:
return False
fetched.delete_instance(recursive=True, delete_nullable=False)
return True

View file

@ -4,7 +4,7 @@ from uuid import uuid4
from peewee import IntegrityError
from data.model import (image, db_transaction, DataModelException, _basequery,
InvalidManifestException, TagAlreadyCreatedException)
InvalidManifestException, TagAlreadyCreatedException, StaleTagException)
from data.database import (RepositoryTag, Repository, Image, ImageStorage, Namespace, TagManifest,
RepositoryNotification, Label, TagManifestLabel, get_epoch_timestamp,
db_for_update)
@ -92,6 +92,9 @@ def create_or_update_tag(namespace_name, repository_name, tag_name, tag_docker_i
tag.save()
except RepositoryTag.DoesNotExist:
pass
except IntegrityError:
msg = 'Tag with name %s was stale when we tried to update it; Please retry the push'
raise StaleTagException(msg % tag_name)
try:
image_obj = Image.get(Image.docker_image_id == tag_docker_image_id, Image.repository == repo)

View file

@ -257,8 +257,13 @@ def get_organization_team_member_invites(teamid):
def delete_team_email_invite(team, email):
found = TeamMemberInvite.get(TeamMemberInvite.email == email, TeamMemberInvite.team == team)
try:
found = TeamMemberInvite.get(TeamMemberInvite.email == email, TeamMemberInvite.team == team)
except TeamMemberInvite.DoesNotExist:
return False
found.delete_instance()
return True
def delete_team_user_invite(team, user_obj):