Catch operational errors in more critical places.
This commit is contained in:
@@ -85,9 +85,17 @@ def task_update_page_count(self, version_id):
|
|||||||
|
|
||||||
@app.task(bind=True, default_retry_delay=UPLOAD_NEW_VERSION_RETRY_DELAY, ignore_result=True)
|
@app.task(bind=True, default_retry_delay=UPLOAD_NEW_VERSION_RETRY_DELAY, ignore_result=True)
|
||||||
def task_upload_new_version(self, document_id, shared_uploaded_file_id, user_id, comment=None):
|
def task_upload_new_version(self, document_id, shared_uploaded_file_id, user_id, comment=None):
|
||||||
|
try:
|
||||||
document = Document.objects.get(pk=document_id)
|
document = Document.objects.get(pk=document_id)
|
||||||
|
except OperationalError as exception:
|
||||||
|
logger.warning('Operational error during attempt to retrieve document: %s; %s. Retrying.', document_id, exception)
|
||||||
|
raise self.retry(exc=exception)
|
||||||
|
|
||||||
|
try:
|
||||||
shared_file = SharedUploadedFile.objects.get(pk=shared_uploaded_file_id)
|
shared_file = SharedUploadedFile.objects.get(pk=shared_uploaded_file_id)
|
||||||
|
except OperationalError as exception:
|
||||||
|
logger.warning('Operational error during attempt to retrieve shared file: %s; %s. Retrying.', shared_uploaded_file_id, exception)
|
||||||
|
raise self.retry(exc=exception)
|
||||||
|
|
||||||
if user_id:
|
if user_id:
|
||||||
user = User.objects.get(pk=user_id)
|
user = User.objects.get(pk=user_id)
|
||||||
@@ -103,12 +111,17 @@ def task_upload_new_version(self, document_id, shared_uploaded_file_id, user_id,
|
|||||||
logger.info('Warning during attempt to create new document version for document: %s; %s', document, warning)
|
logger.info('Warning during attempt to create new document version for document: %s; %s', document, warning)
|
||||||
shared_file.delete()
|
shared_file.delete()
|
||||||
except OperationalError as exception:
|
except OperationalError as exception:
|
||||||
# Database is locked for example
|
|
||||||
logger.warning('Operational error during attempt to create new document version for document: %s; %s. Retrying.', document, exception)
|
logger.warning('Operational error during attempt to create new document version for document: %s; %s. Retrying.', document, exception)
|
||||||
raise self.retry(exc=exception)
|
raise self.retry(exc=exception)
|
||||||
except Exception as exception:
|
except Exception as exception:
|
||||||
# This except and else block emulate a finally:
|
# This except and else block emulate a finally:
|
||||||
logger.error('Unexpected error during attempt to create new document version for document: %s; %s', document, exception)
|
logger.error('Unexpected error during attempt to create new document version for document: %s; %s', document, exception)
|
||||||
|
try:
|
||||||
shared_file.delete()
|
shared_file.delete()
|
||||||
|
except OperationalError as exception:
|
||||||
|
logger.warning('Operational error during attempt to delete shared file: %s; %s. Retrying.', shared_file, exception)
|
||||||
else:
|
else:
|
||||||
|
try:
|
||||||
shared_file.delete()
|
shared_file.delete()
|
||||||
|
except OperationalError as exception:
|
||||||
|
logger.warning('Operational error during attempt to delete shared file: %s; %s. Retrying.', shared_file, exception)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ from __future__ import unicode_literals
|
|||||||
import datetime
|
import datetime
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from django.db import models, transaction
|
from django.db import OperationalError, models, transaction
|
||||||
from django.db.utils import IntegrityError
|
from django.db.utils import IntegrityError
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now
|
||||||
|
|
||||||
@@ -41,6 +41,8 @@ class LockManager(models.Manager):
|
|||||||
else:
|
else:
|
||||||
logger.debug('unable to acquire lock: %s', name)
|
logger.debug('unable to acquire lock: %s', name)
|
||||||
raise LockError('Unable to acquire lock')
|
raise LockError('Unable to acquire lock')
|
||||||
|
except OperationalError as exception:
|
||||||
|
raise LockError('Operational error while trying to acquire lock: %s; %s', name, exception)
|
||||||
else:
|
else:
|
||||||
logger.debug('acquired lock: %s', name)
|
logger.debug('acquired lock: %s', name)
|
||||||
return lock
|
return lock
|
||||||
|
|||||||
Reference in New Issue
Block a user