openedx / openedx/openedx-platform

Reindexing fails for demo course

Open
#37,496 1 comment 0 reactions 1 assignee View on GitHub

@zemelten is already working on this.

Since Oct 31, 2025.

Dominant language
Python
Stars
8.2k
Forks
4.4k
Avg merge
6d 18h
Merged PRs (30d)
42

Description

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

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.