Hi, all.
I've just done an upgrade of our staging instance of the LTI provider to 3.0. It was a bit rocky (I had to update from Ubuntu 18 to 20, which got me the required level of Redis and Python, but broke a couple of other things), but I've got a mostly-working installation now.
I'm running into a problem, though, when I go into a resource on the dashboard and either attempt to download scores as a CSV or report them back to the VLE. I get a 500 Internal Server Error in my browser, and looking in /var/log/supervisor/numbas_lti_daphne_stderr.log, it looks like there's an exception being thrown:
redis.exceptions.RedisError: ZADD requires an equal number of values and scores
It's done this across three different assignments/tests so far. Do I have something misconfigured, or did I miss an upgrade step? (I'm doing this while also training a new member of our team, so it's entirely possible.) I've included the full stack trace below in case that'll help. Thanks in advance for any advice!
2022-01-19 14:34:35,735 ERROR /opt/numbas_lti_python/lib/python3.8/site-packages/django/utils/log.py: Internal Server Error: /resource/1/report_scores
Traceback (most recent call last):
File "/opt/numbas_lti_python/lib/python3.8/site-packages/asgiref/sync.py", line 482, in thread_handler
raise exc_info[1]
File "/opt/numbas_lti_python/lib/python3.8/site-packages/django/core/handlers/exception.py", line 38, in inner
response = await get_response(request)
File "/opt/numbas_lti_python/lib/python3.8/site-packages/django/core/handlers/base.py", line 233, in _get_response_async
response = await wrapped_callback(request, *callback_args, **callback_kwargs)
File "/opt/numbas_lti_python/lib/python3.8/site-packages/asgiref/sync.py", line 444, in __call__
ret = await asyncio.wait_for(future, timeout=None)
File "/usr/lib/python3.8/asyncio/tasks.py", line 455, in wait_for
return await fut
File "/opt/numbas_lti_python/lib/python3.8/site-packages/asgiref/current_thread_executor.py", line 22, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/numbas_lti_python/lib/python3.8/site-packages/asgiref/sync.py", line 486, in thread_handler
return func(*args, **kwargs)
File "/opt/numbas_lti_python/lib/python3.8/site-packages/django/views/generic/base.py", line 70, in view
return self.dispatch(request, *args, **kwargs)
File "/srv/numbas-lti-provider/./numbas_lti/views/mixins.py", line 94, in dispatch
return super(MustHaveExamMixin,self).dispatch(*args,**kwargs)
File "/opt/numbas_lti_python/lib/python3.8/site-packages/django_auth_lti/mixins.py", line 31, in dispatch
return super(LTIRoleRestrictionMixin, self).dispatch(request, *args, **kwargs)
File "/srv/numbas-lti-provider/./numbas_lti/views/mixins.py", line 86, in dispatch
return super(ResourceManagementViewMixin,self).dispatch(*args,**kwargs)
File "/opt/numbas_lti_python/lib/python3.8/site-packages/django/views/generic/base.py", line 98, in dispatch
return handler(request, *args, **kwargs)
File "/srv/numbas-lti-provider/./numbas_lti/views/resource.py", line 334, in get
resource.task_report_scores()
File "/srv/numbas-lti-provider/./numbas_lti/models.py", line 514, in task_report_scores
tasks.resource_report_scores(self)
File "/opt/numbas_lti_python/lib/python3.8/site-packages/huey/api.py", line 823, in __call__
return self.huey.enqueue(self.s(*args, **kwargs))
File "/opt/numbas_lti_python/lib/python3.8/site-packages/huey/api.py", line 298, in enqueue
self.storage.enqueue(self.serialize_task(task), task.priority)
File "/opt/numbas_lti_python/lib/python3.8/site-packages/huey/storage.py", line 571, in enqueue
self.conn.zadd(self.queue_key, {prefix + data: priority})
File "/opt/numbas_lti_python/lib/python3.8/site-packages/redis/client.py", line 1691, in zadd
raise RedisError("ZADD requires an equal number of "
redis.exceptions.RedisError: ZADD requires an equal number of values and scores
--
Tom Salyers