We (UVa) encountered a fault on a production server, that proved difficult to hunt down. After investigation, the root cause of this fault was found to be that exceptions thrown from GradingService may cause SubmitTimedAssessmentThread to die before removing the offending item from the queue. After this has occurred, the server will not timer submit any further assessments from the thread. Restart of tomcat is required after this fault is encountered.
This condition can be reproduced as follows:
- As Instructor:
- Create a timed assessment with the publishes to GB
- As Student:
- Begin taking the assessment and see the timer counting down
- Leave the assessment
- As Instructor:
- Delete the published assessment before the timer expires
- Wait for the timer to attempt submission
In tomcat logs a GradebookServiceException is seen:
org.sakaiproject.tool.assessment.services.GradebookServiceException: org.sakaiproject.service.gradebook.shared.AssessmentNotFoundException: There is no assessment id=x in gradebook uid=xxx-xxx-xxx
If you attempt another timed assessment then leave it, the assessment it will never submit.
Note: Workarounds for institutions who may be experiencing this issue to get stuck exams submitted:
- Instructor could use Autosubmit to retrieve stuck exams.
- If the latest submission date for the exam had not passed so the student with the stuck exam could still access the link to it, the student could log out of the affected Sakai server and log into a different server (where the timers for all assessments are still working). Once on a server with functional timers, if the student with the stuck exam clicked the link to it and tried to continue taking the assessment, they’d be told their exam was already submitted and they couldn’t take it. At this point, the timer submit would be triggered and a couple minutes later, the submission would complete.