Commit 6d0af9d4 by Cliff Dyer Committed by GitHub

Merge pull request #14157 from edx/efischer/tnl-5799

update_course_in_cache error handling cleanup.
parents d1fa83f3 92591565
...@@ -2,14 +2,24 @@ ...@@ -2,14 +2,24 @@
Asynchronous tasks related to the Course Blocks sub-application. Asynchronous tasks related to the Course Blocks sub-application.
""" """
import logging import logging
from capa.responsetypes import LoncapaProblemError
from celery.task import task from celery.task import task
from django.conf import settings from django.conf import settings
from lxml.etree import XMLSyntaxError
from edxval.api import ValInternalError
from opaque_keys.edx.keys import CourseKey from opaque_keys.edx.keys import CourseKey
from xmodule.modulestore.exceptions import ItemNotFoundError
from openedx.core.djangoapps.content.block_structure import api from openedx.core.djangoapps.content.block_structure import api
log = logging.getLogger('edx.celery.task') log = logging.getLogger('edx.celery.task')
# TODO: TNL-5799 is ongoing; narrow these lists down until the general exception is no longer needed
RETRY_TASKS = (ItemNotFoundError, TypeError, ValInternalError)
NO_RETRY_TASKS = (XMLSyntaxError, LoncapaProblemError, UnicodeEncodeError)
@task( @task(
default_retry_delay=settings.BLOCK_STRUCTURES_SETTINGS['BLOCK_STRUCTURES_TASK_DEFAULT_RETRY_DELAY'], default_retry_delay=settings.BLOCK_STRUCTURES_SETTINGS['BLOCK_STRUCTURES_TASK_DEFAULT_RETRY_DELAY'],
...@@ -22,10 +32,14 @@ def update_course_in_cache(course_id): ...@@ -22,10 +32,14 @@ def update_course_in_cache(course_id):
try: try:
course_key = CourseKey.from_string(course_id) course_key = CourseKey.from_string(course_id)
api.update_course_in_cache(course_key) api.update_course_in_cache(course_key)
except NO_RETRY_TASKS as exc:
# Known unrecoverable errors
raise
except RETRY_TASKS as exc:
log.exception("update_course_in_cache encounted expected error, retrying.")
raise update_course_in_cache.retry(args=[course_id], exc=exc)
except Exception as exc: # pylint: disable=broad-except except Exception as exc: # pylint: disable=broad-except
# TODO: TNL-5799, check splunk logs to narrow down the broad except above log.exception("update_course_in_cache encounted unknown error. Retry #{}".format(
log.info("update_course_in_cache. Retry #{} for this task, exception: {}".format(
update_course_in_cache.request.retries, update_course_in_cache.request.retries,
repr(exc)
)) ))
raise update_course_in_cache.retry(args=[course_id], exc=exc) raise update_course_in_cache.retry(args=[course_id], exc=exc)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment