Skip to content

Reindexing fails for demo course #37496

@CodeWithEmad

Description

@CodeWithEmad

Hi
I've a fresh installation, with tutor tutor-minio
I can import the course without an issue using tutor local do importdemocourse, but when I want to reindex my courses, it fails.

$ tutor local run cms ./manage.py cms reindex_course --all --setup
....

2025-10-17 12:53:43,121 ERROR 1 [edxval.api] [user None] [ip None] api.py:295 - [edx-val] Error while retrieving transcript for video=fdfa686f-8b70-4437-a490-0459cc9f1f2a -- language_code=en
Traceback (most recent call last):
  File "/openedx/venv/lib/python3.11/site-packages/edxval/api.py", line 293, in get_video_transcript_data
    return dict(file_name=video_transcript.filename, content=video_transcript.transcript.file.read())
                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/openedx/venv/lib/python3.11/site-packages/storages/backends/s3.py", line 198, in read
    return self._force_mode(super().read(*args, **kwargs))
                            ^^^^^^^^^^^^
  File "/openedx/venv/lib/python3.11/site-packages/django/core/files/utils.py", line 41, in <lambda>
    read = property(lambda self: self.file.read)
                                 ^^^^^^^^^
  File "/openedx/venv/lib/python3.11/site-packages/storages/backends/s3.py", line 181, in _get_file
    self.obj.download_fileobj(
  File "/openedx/venv/lib/python3.11/site-packages/boto3/s3/inject.py", line 948, in object_download_fileobj
    return self.meta.client.download_fileobj(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/openedx/venv/lib/python3.11/site-packages/botocore/context.py", line 124, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/openedx/venv/lib/python3.11/site-packages/boto3/s3/inject.py", line 859, in download_fileobj
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/openedx/venv/lib/python3.11/site-packages/s3transfer/futures.py", line 111, in result
    return self._coordinator.result()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/openedx/venv/lib/python3.11/site-packages/s3transfer/futures.py", line 272, in result
    raise self._exception
  File "/openedx/venv/lib/python3.11/site-packages/s3transfer/tasks.py", line 272, in _main
    self._submit(transfer_future=transfer_future, **kwargs)
  File "/openedx/venv/lib/python3.11/site-packages/s3transfer/download.py", line 358, in _submit
    response['ContentLength']
    ~~~~~~~~^^^^^^^^^^^^^^^^^
KeyError: 'ContentLength'
2025-10-17 12:53:43,123 ERROR 1 [edx.modulestore] [user None] [ip None] courseware_index.py:264 - Indexing error encountered, courseware index may be out of date course-v1:OpenedX+DemoX+DemoCourse - KeyError('ContentLength')
Traceback (most recent call last):
  File "/openedx/edx-platform/cms/djangoapps/contentstore/courseware_index.py", line 258, in index
    prepare_item_index(item, groups_usage_info=groups_usage_info)
  File "/openedx/edx-platform/cms/djangoapps/contentstore/courseware_index.py", line 218, in prepare_item_index
    prepare_item_index(
  File "/openedx/edx-platform/cms/djangoapps/contentstore/courseware_index.py", line 218, in prepare_item_index
    prepare_item_index(
  File "/openedx/edx-platform/cms/djangoapps/contentstore/courseware_index.py", line 218, in prepare_item_index
    prepare_item_index(
  File "/openedx/edx-platform/cms/djangoapps/contentstore/courseware_index.py", line 181, in prepare_item_index
    item_index_dictionary = item.index_dictionary()
                            ^^^^^^^^^^^^^^^^^^^^^^^
  File "/openedx/edx-platform/xmodule/video_block/video_block.py", line 1160, in index_dictionary
    _update_transcript_for_index(language)
  File "/openedx/edx-platform/xmodule/video_block/video_block.py", line 1148, in _update_transcript_for_index
    transcript = get_transcript(self, lang=language, output_format=Transcript.TXT)[0].replace("\n", " ")
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/openedx/edx-platform/xmodule/video_block/transcripts_utils.py", line 1197, in get_transcript
    return get_transcript_from_val(edx_video_id, lang, output_format)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/openedx/edx-platform/xmodule/video_block/transcripts_utils.py", line 73, in wrapper
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
  File "/openedx/edx-platform/xmodule/video_block/transcripts_utils.py", line 956, in get_transcript_from_val
    transcript = get_video_transcript_content(edx_video_id, lang)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/openedx/edx-platform/xmodule/video_block/transcripts_utils.py", line 639, in get_video_transcript_content
    transcript = edxval_api.get_video_transcript_data(edx_video_id, language_code)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/openedx/venv/lib/python3.11/site-packages/edxval/api.py", line 293, in get_video_transcript_data
    return dict(file_name=video_transcript.filename, content=video_transcript.transcript.file.read())
                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/openedx/venv/lib/python3.11/site-packages/storages/backends/s3.py", line 198, in read
    return self._force_mode(super().read(*args, **kwargs))
                            ^^^^^^^^^^^^
  File "/openedx/venv/lib/python3.11/site-packages/django/core/files/utils.py", line 41, in <lambda>
    read = property(lambda self: self.file.read)
                                 ^^^^^^^^^
  File "/openedx/venv/lib/python3.11/site-packages/storages/backends/s3.py", line 181, in _get_file
    self.obj.download_fileobj(
  File "/openedx/venv/lib/python3.11/site-packages/boto3/s3/inject.py", line 948, in object_download_fileobj
    return self.meta.client.download_fileobj(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/openedx/venv/lib/python3.11/site-packages/botocore/context.py", line 124, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/openedx/venv/lib/python3.11/site-packages/boto3/s3/inject.py", line 859, in download_fileobj
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/openedx/venv/lib/python3.11/site-packages/s3transfer/futures.py", line 111, in result
    return self._coordinator.result()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/openedx/venv/lib/python3.11/site-packages/s3transfer/futures.py", line 272, in result
    raise self._exception
  File "/openedx/venv/lib/python3.11/site-packages/s3transfer/tasks.py", line 272, in _main
    self._submit(transfer_future=transfer_future, **kwargs)
  File "/openedx/venv/lib/python3.11/site-packages/s3transfer/download.py", line 358, in _submit
    response['ContentLength']
    ~~~~~~~~^^^^^^^^^^^^^^^^^
KeyError: 'ContentLength'
2025-10-17 12:53:43,126 ERROR 1 [root] [user None] [ip None] reindex_course.py:177 - Error indexing course course-v1:OpenedX+DemoX+DemoCourse due to the error: Error(s) present during indexing.
Traceback (most recent call last):
  File "/openedx/edx-platform/cms/djangoapps/contentstore/management/commands/reindex_course.py", line 169, in handle
    CoursewareSearchIndexer.do_course_reindex(store, course_key)
  File "/openedx/edx-platform/cms/djangoapps/contentstore/courseware_index.py", line 374, in do_course_reindex
    return cls._do_reindex(modulestore, course_key)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/openedx/edx-platform/cms/djangoapps/contentstore/courseware_index.py", line 384, in _do_reindex
    indexed_count = super()._do_reindex(modulestore, structure_key)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/openedx/edx-platform/cms/djangoapps/contentstore/courseware_index.py", line 282, in _do_reindex
    indexed_count = cls.index(modulestore, structure_key, timeout=180)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/openedx/edx-platform/cms/djangoapps/contentstore/courseware_index.py", line 272, in index
    raise SearchIndexingError('Error(s) present during indexing', error_list)
cms.djangoapps.contentstore.courseware_index.SearchIndexingError: Error(s) present during indexing
2025-10-17 12:53:43,127 WARNING 1 [root] [user None] [ip None] reindex_course.py:180 - 2 of 3 courses reindexed succesfully. Total running time: 2.5 seconds.
2025-10-17 12:53:43,127 WARNING 1 [root] [user None] [ip None] reindex_course.py:182 - Reindex failed for 1 courses:
2025-10-17 12:53:43,127 WARNING 1 [root] [user None] [ip None] reindex_course.py:184 - course-v1:OpenedX+DemoX+DemoCourse

edx-platform: teak.1
tutor and tutor-minio: 20.0.0

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions