Open response assessment: trouble rendering component

I tried added an open response assessment block, which as far as I can tell this is a core block and so wouldn’t require installing any plugins. I setup the block, although parts of the block seemed unresponsive when clicked on them. It saved okay. But after re-edigint it, and removing all response types except ‘staff’ and saving, the page in studio just shows me an error:

WE'RE HAVING TROUBLE RENDERING YOUR COMPONENT
Students will not be able to access this component. Re-edit your component to fix the error.

Error: Requirements dict must contain "num_required" key

I can’t re-edit the component - the screenshot shows all of the blocks from this unit have gone and all that remains is the error message.

The logs I get on loading this page follow:

cms_1            | 2021-03-07 13:52:49,007 INFO 6 [tracking] [user 3] [ip masked] logger.py:42 - {"name": "/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d", "context": {"user_id": 3, "path": "/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d", "course_id": "", "org_id": ""}, "username": "kit", "session": "8dae3c3912f5b16b56ed0f72ed48dbd5", "ip": "masked", "agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36", "host": "studio.training.example.com", "referer": "https://studio.training.example.com/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@68053aaaf4044fb6a881a4822db50637", "accept_language": "en,it;q=0.9", "event": "{\"GET\": {}, \"POST\": {}}", "time": "2021-03-07T13:52:49.007332+00:00", "event_type": "/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d", "event_source": "server", "page": null}
nginx_1          | 172.18.0.2 - - [07/Mar/2021:13:52:49 +0000] http://studio.training.example.com "GET /container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d HTTP/1.1" 200 73362 "https://studio.training.example.com/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@68053aaaf4044fb6a881a4822db50637" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36" "49.49.234.128"
cms_1            | [pid: 6|app: 0|req: 3892/4600] 172.18.0.11 () {58 vars in 3208 bytes} [Sun Mar  7 13:52:48 2021] GET /container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d => generated 73362 bytes in 251 msecs (HTTP/1.0 200) 7 headers in 474 bytes (1 switches on core 0)
cms_1            | 2021-03-07 13:52:49,786 INFO 6 [tracking] [user 3] [ip masked] logger.py:42 - {"name": "/xblock/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d/container_preview", "context": {"user_id": 3, "path": "/xblock/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d/container_preview", "course_id": "", "org_id": ""}, "username": "kit", "session": "8dae3c3912f5b16b56ed0f72ed48dbd5", "ip": "masked", "agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36", "host": "studio.training.example.com", "referer": "https://studio.training.example.com/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d", "accept_language": "en,it;q=0.9", "event": "{\"GET\": {\"_\": [\"1615125164859\"]}, \"POST\": {}}", "time": "2021-03-07T13:52:49.786213+00:00", "event_type": "/xblock/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d/container_preview", "event_source": "server", "page": null}
cms_1            | 2021-03-07 13:52:50,223 WARNING 6 [cms.djangoapps.contentstore.views.preview] [user 3] [ip masked] preview.py:329 - Unable to render author_view for <VerticalBlockWithMixins @8377 parent=BlockUsageLocator(CourseLocator('triangle-tech', 'A1', '2021_T1', None, None), 'sequential', '0791c48d2b2f4503a92f1ef6ca96bac2'), name=None, tags=[], display_name='Amalgamation', course_edit_method='Studio', days_early_for_beta=None, due=None, edxnotes=False, edxnotes_visibility=True, giturl=None, graceperiod=datetime.timedelta(0), graded=False, group_access={}, in_entrance_exam=False, matlab_api_key=None, max_attempts=1, rerandomize='always', self_paced=True, show_correctness='always', show_reset_button=False, showanswer='attempted', start=datetime.datetime(2021, 1, 1, 0, 0, tzinfo=tzlocal()), static_asset_path='', use_latex_compiler=False, user_partitions=[], video_auto_advance=False, video_bumper={}, video_speed_optimizations=True, visible_to_staff_only=False, xqa_key=None, chrome=None, default_tab=None, format=None, hide_from_toc=False, source_file=None, children=[BlockUsageLocator(CourseLocator('triangle-tech', 'A1', '2021_T1', None, None), 'html', 'ad9d9344d67d4c61938890059ea3eb4f'), BlockUsageLocator(CourseLocator('triangle-tech', 'A1', '2021_T1', None, None), 'html', '001775f061a14a248c44bd14dd69bc1b'), BlockUsageLocator(CourseLocator('triangle-tech', 'A1', '2021_T1', None, None), 'html', 'dab9bdd08de2485587c68ea633b2b430'), BlockUsageLocator(CourseLocator('triangle-tech', 'A1', '2021_T1', None, None), 'openassessment', 'a7a502b5c4804affb32c2c7b7c228286')], hide_after_due=False, is_entrance_exam=False, position=None, xml_attributes={}>
cms_1            | Traceback (most recent call last):
cms_1            |   File "/openedx/venv/lib/python3.8/site-packages/openassessment/assessment/api/student_training.py", line 46, in submitter_is_finished
cms_1            |     num_required = int(training_requirements['num_required'])
cms_1            | KeyError: 'num_required'
cms_1            |
cms_1            | During handling of the above exception, another exception occurred:
cms_1            |
cms_1            | Traceback (most recent call last):
cms_1            |   File "./cms/djangoapps/contentstore/views/preview.py", line 327, in get_preview_fragment
cms_1            |     fragment = module.render(preview_view, context)
cms_1            |   File "/openedx/venv/lib/python3.8/site-packages/xblock/core.py", line 199, in render
cms_1            |     return self.runtime.render(self, view, context)
cms_1            |   File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1979, in render
cms_1            |     return self.__getattr__('render')(block, view_name, context)
cms_1            |   File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1423, in render
cms_1            |     return super(MetricsMixin, self).render(block, view_name, context=context)
cms_1            |   File "/openedx/venv/lib/python3.8/site-packages/xblock/runtime.py", line 826, in render
cms_1            |     frag = view_fn(context)
cms_1            |   File "/openedx/edx-platform/common/lib/xmodule/xmodule/vertical_block.py", line 152, in author_view
cms_1            |     self.render_children(context, fragment, can_reorder=True, can_add=True)
cms_1            |   File "/openedx/edx-platform/common/lib/xmodule/xmodule/studio_editable.py", line 29, in render_children
cms_1            |     rendered_child = child.render(StudioEditableModule.get_preview_view_name(child), context)
cms_1            |   File "/openedx/venv/lib/python3.8/site-packages/xblock/core.py", line 199, in render
cms_1            |     return self.runtime.render(self, view, context)
cms_1            |   File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1979, in render
cms_1            |     return self.__getattr__('render')(block, view_name, context)
cms_1            |   File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1423, in render
cms_1            |     return super(MetricsMixin, self).render(block, view_name, context=context)
cms_1            |   File "/openedx/venv/lib/python3.8/site-packages/xblock/runtime.py", line 826, in render
cms_1            |     frag = view_fn(context)
cms_1            |   File "/openedx/venv/lib/python3.8/site-packages/openassessment/xblock/openassessmentblock.py", line 513, in student_view
cms_1            |     self.update_workflow_status()
cms_1            |   File "/openedx/venv/lib/python3.8/site-packages/openassessment/xblock/workflow_mixin.py", line 111, in update_workflow_status
cms_1            |     workflow_api.update_from_assessments(submission_uuid, requirements)
cms_1            |   File "/openedx/venv/lib/python3.8/site-packages/openassessment/workflow/api.py", line 265, in update_from_assessments
cms_1            |     workflow.update_from_assessments(assessment_requirements, override_submitter_requirements)
cms_1            |   File "/openedx/venv/lib/python3.8/site-packages/openassessment/workflow/models.py", line 359, in update_from_assessments
cms_1            |     step.update(self.submission_uuid, assessment_requirements)
cms_1            |   File "/openedx/venv/lib/python3.8/site-packages/openassessment/workflow/models.py", line 869, in update
cms_1            |     if not self.is_submitter_complete() and submitter_finished(submission_uuid, step_reqs):
cms_1            |   File "/openedx/venv/lib/python3.8/site-packages/openassessment/assessment/api/student_training.py", line 48, in submitter_is_finished
cms_1            |     raise StudentTrainingRequestError(u'Requirements dict must contain "num_required" key')
cms_1            | openassessment.assessment.errors.student_training.StudentTrainingRequestError: Requirements dict must contain "num_required" key
nginx_1          | 172.18.0.2 - - [07/Mar/2021:13:52:50 +0000] http://studio.training.example.com "GET /xblock/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d/container_preview?_=1615125164859 HTTP/1.1" 200 628 "https://studio.training.example.com/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36" "49.49.234.128"
cms_1            | [pid: 6|app: 0|req: 3893/4601] 172.18.0.11 () {56 vars in 3175 bytes} [Sun Mar  7 13:52:49 2021] GET /xblock/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d/container_preview?_=1615125164859 => generated 628 bytes in 465 msecs (HTTP/1.0 200) 7 headers in 464 bytes (1 switches on core 0)
cms_1            | 2021-03-07 13:52:50,401 INFO 6 [tracking] [user 3] [ip masked] logger.py:42 - {"name": "/xblock/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d", "context": {"user_id": 3, "path": "/xblock/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d", "course_id": "", "org_id": ""}, "username": "kit", "session": "8dae3c3912f5b16b56ed0f72ed48dbd5", "ip": "masked", "agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36", "host": "studio.training.example.com", "referer": "https://studio.training.example.com/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d", "accept_language": "en,it;q=0.9", "event": "{\"GET\": {}, \"POST\": {}}", "time": "2021-03-07T13:52:50.401543+00:00", "event_type": "/xblock/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d", "event_source": "server", "page": null}
nginx_1          | 172.18.0.2 - - [07/Mar/2021:13:52:50 +0000] http://studio.training.example.com "GET /xblock/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d HTTP/1.1" 200 17973 "https://studio.training.example.com/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36" "49.49.234.128"
cms_1            | [pid: 6|app: 0|req: 3894/4602] 172.18.0.11 () {56 vars in 3158 bytes} [Sun Mar  7 13:52:50 2021] GET /xblock/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d => generated 17973 bytes in 132 msecs (HTTP/1.0 200) 6 headers in 298 bytes (1 switches on core 0)
cms_1            | 2021-03-07 13:52:50,536 INFO 6 [tracking] [user 3] [ip masked] logger.py:42 - {"name": "/xblock/block-v1:triangle-tech+A1+2021_T1+type@sequential+block@0791c48d2b2f4503a92f1ef6ca96bac2/author_view", "context": {"user_id": 3, "path": "/xblock/block-v1:triangle-tech+A1+2021_T1+type@sequential+block@0791c48d2b2f4503a92f1ef6ca96bac2/author_view", "course_id": "", "org_id": ""}, "username": "kit", "session": "8dae3c3912f5b16b56ed0f72ed48dbd5", "ip": "masked", "agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36", "host": "studio.training.example.com", "referer": "https://studio.training.example.com/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d", "accept_language": "en,it;q=0.9", "event": "{\"GET\": {\"position\": [\"5\"], \"next_url\": [\"/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@4e564195a9c140ef96cc562acae96cdd\"], \"prev_url\": [\"/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@ef1dae049b1847fc873d6b4505e54b21\"], \"_\": [\"1615125164860\"]}, \"POST\": {}}", "time": "2021-03-07T13:52:50.535779+00:00", "event_type": "/xblock/block-v1:triangle-tech+A1+2021_T1+type@sequential+block@0791c48d2b2f4503a92f1ef6ca96bac2/author_view", "event_source": "server", "page": null}
nginx_1          | 172.18.0.2 - - [07/Mar/2021:13:52:50 +0000] http://studio.training.example.com "GET /xblock/block-v1:triangle-tech+A1+2021_T1+type@sequential+block@0791c48d2b2f4503a92f1ef6ca96bac2/author_view?position=5&next_url=%2Fcontainer%2Fblock-v1%3Atriangle-tech%2BA1%2B2021_T1%2Btype%40vertical%2Bblock%404e564195a9c140ef96cc562acae96cdd&prev_url=%2Fcontainer%2Fblock-v1%3Atriangle-tech%2BA1%2B2021_T1%2Btype%40vertical%2Bblock%40ef1dae049b1847fc873d6b4505e54b21&_=1615125164860 HTTP/1.1" 200 8815 "https://studio.training.example.com/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36" "49.49.234.128"
cms_1            | [pid: 6|app: 0|req: 3895/4603] 172.18.0.11 () {56 vars in 3689 bytes} [Sun Mar  7 13:52:50 2021] GET /xblock/block-v1:triangle-tech+A1+2021_T1+type@sequential+block@0791c48d2b2f4503a92f1ef6ca96bac2/author_view?position=5&next_url=%2Fcontainer%2Fblock-v1%3Atriangle-tech%2BA1%2B2021_T1%2Btype%40vertical%2Bblock%404e564195a9c140ef96cc562acae96cdd&prev_url=%2Fcontainer%2Fblock-v1%3Atriangle-tech%2BA1%2B2021_T1%2Btype%40vertical%2Bblock%40ef1dae049b1847fc873d6b4505e54b21&_=1615125164860 => generated 8815 bytes in 86 msecs (HTTP/1.0 200) 8 headers in 780 bytes (1 switches on core 0)
cms_1            | [pid: 6|app: -1|req: -1/4604] 172.18.0.11 () {56 vars in 2953 bytes} [Sun Mar  7 13:52:50 2021] GET /static/images/favicon.ico => generated 30237 bytes in 0 msecs via sendfile() (HTTP/1.0 200) 3 headers in 128 bytes (0 switches on core 0)
nginx_1          | 172.18.0.2 - - [07/Mar/2021:13:52:50 +0000] http://studio.training.example.com "GET /static/studio/images/favicon.ico HTTP/1.1" 200 30237 "https://studio.training.example.com/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36" "49.49.234.128"
redis_1          | 1:M 07 Mar 2021 13:54:04.086 * 10 changes in 300 seconds. Saving...
redis_1          | 1:M 07 Mar 2021 13:54:04.089 * Background saving started by pid 2399
redis_1          | 2399:C 07 Mar 2021 13:54:04.576 * DB saved on disk
redis_1          | 2399:C 07 Mar 2021 13:54:04.579 * RDB: 1 MB of memory used by copy-on-write
redis_1          | 1:M 07 Mar 2021 13:54:04.591 * Background saving terminated with success
redis_1          | 1:M 07 Mar 2021 13:59:05.001 * 10 changes in 300 seconds. Saving...
redis_1          | 1:M 07 Mar 2021 13:59:05.003 * Background saving started by pid 2400
redis_1          | 2400:C 07 Mar 2021 13:59:05.477 * DB saved on disk
redis_1          | 2400:C 07 Mar 2021 13:59:05.479 * RDB: 1 MB of memory used by copy-on-write
redis_1          | 1:M 07 Mar 2021 13:59:05.505 * Background saving terminated with success

Hi @oldmankit! I tried but did not manage to reproduce your issue. Could you please provide a step-by-step guide that leads to the error? This should (probably) start by:

  1. Go to studio.demo.openedx.overhang.io
  2. Create a new unit, then “Add new component → Problem → Advanced → Open Response Assessment”

Also, please include your Tutor version (tutor --version).

@regis Thank you so much for helping. It’s tutor version 11.2.3.

After waiting 24 hours, the problem went away on its own, and I’m able to edit the assessment. There is still a problem I’m facing with the open response assessment, but I’ll post a new topic for that.