diff --git a/openedx/features/offline_mode/assets_management.py b/openedx/features/offline_mode/assets_management.py index 1418c7b4e46b..01804d69ef67 100644 --- a/openedx/features/offline_mode/assets_management.py +++ b/openedx/features/offline_mode/assets_management.py @@ -59,7 +59,7 @@ def save_asset_file(temp_dir, xblock, path, filename): content = read_static_file(static_path) file_path = os.path.join(temp_dir, 'assets', filename) except (FileNotFoundError, ItemNotFoundError, NotFoundError): - log.info(f"Asset not found: {filename}") + log.warning(f"Asset not found: {filename}, during offline content generation.") else: create_subdirectories_for_asset(file_path) diff --git a/openedx/features/offline_mode/renderer.py b/openedx/features/offline_mode/renderer.py index c0603b3c831e..09258b4ef060 100644 --- a/openedx/features/offline_mode/renderer.py +++ b/openedx/features/offline_mode/renderer.py @@ -81,7 +81,6 @@ def render_xblock_from_lms(self): str(self.usage_key), disable_staff_debug_info=True, course=course, - will_recheck_access=False, ) enable_completion_on_view_service = False diff --git a/openedx/features/offline_mode/tasks.py b/openedx/features/offline_mode/tasks.py index d98b87384e6f..31fc6dc1d0a6 100644 --- a/openedx/features/offline_mode/tasks.py +++ b/openedx/features/offline_mode/tasks.py @@ -3,6 +3,7 @@ """ from celery import shared_task from edx_django_utils.monitoring import set_code_owner_attribute +from django.http.response import Http404 from opaque_keys.edx.keys import CourseKey, UsageKey from xmodule.modulestore.django import modulestore @@ -17,6 +18,8 @@ def generate_offline_content_for_course(course_id): """ Generates offline content for all supported XBlocks in the course. + + Blocks that are closed to responses won't be processed. """ course_key = CourseKey.from_string(course_id) for offline_supported_block_type in OFFLINE_SUPPORTED_XBLOCKS: @@ -28,7 +31,7 @@ def generate_offline_content_for_course(course_id): @shared_task( - autoretry_for=(Exception,), + autoretry_for=(Exception, Http404), retry_backoff=RETRY_BACKOFF_INITIAL_TIMEOUT, retry_kwargs={'max_retries': MAX_RETRY_ATTEMPTS} ) diff --git a/openedx/features/offline_mode/utils.py b/openedx/features/offline_mode/utils.py index c1ae7efa86b4..015ae6285996 100644 --- a/openedx/features/offline_mode/utils.py +++ b/openedx/features/offline_mode/utils.py @@ -38,7 +38,10 @@ def generate_offline_content(xblock, html_data): save_xblock_html(tmp_dir, xblock, html_data) create_zip_file(tmp_dir, base_path, f'{xblock.location.block_id}.zip') except Http404: - log.error(f'Block {xblock.location.block_id} for course {xblock.location.course_key} not found.') + log.error( + f'Block {xblock.location.block_id} cannot be fetched from course' + f' {xblock.location.course_key} during offline content generation.' + ) finally: shutil.rmtree(tmp_dir, ignore_errors=True)