Gradebook override expected behavior
Over the past few days, we have had 2 partners (GT and Purdue) successfully override grades via Gradebook for learners that did not initially have a grade for the problem component. Both of these partners added extra credit placeholder units into their course - learners did not directly access these problems, but the course teams were successful with a grade override in GradeBook.
IUx course component (GradeBook Placeholder): https://studio.edx.org/container/block-v1:PurdueX+ECE606+1T2021+type@vertical+block@6043682bd07a43d9a170dec4ac6479d6
The IUx team initially could not override grades for this problem component (see screenshot 'IU_unsuccessful_override'), which is the expected behavior for learners that do not have an already existing problem grade. However, a few hours after IU's initial GradeBook override attempt, they tried the override again and were were successful, even though the learners never accessed the problem component. Please see the screenshot 'IU_override_success' for a confirmation of the successful override.
This same exact behavior happened in the GT course (component link: https://studio.edx.org/container/block-v1:GTx+MGT6203x+1T2021+type@vertical+block@1c6def8c1ce84b6badc3d9eedb98a56e). The course team tried to override a non-existent grade for learner AlejandraBonillas, was unable to override because a grade did not exist, BUT tried the same override again and was able to successfully override.
Can you please look into this? I was under the impression that course teams cannot override a grade unless a learner has an existing grade. However, it appears that although course teams are initially unsuccessful with these overrides, they can eventually override successfully.
Steps to Reproduce
Reason for Variance
User Impact Summary
My understanding of what’s happening:
At the time the course team uploads course grades via bulk management, we immediately add a subsection-level override record. Whenever such an override record is added, the denominator of the override record is derived from the underlying subsection grade, and is assumed 0 if there is no underlying grade. After the override is added, we also enqueue an update that will recalculate the learner’s underlying grade (which we don’t do first because it’s a more expensive operation, and has to happen asynchronously some time later). After this regrade goes through, the learner does have a persistent subsection grade, what I called an underlying grade earlier, with a correct nonzero denominator. Thus, subsequent grade override entries after the first, plus after that asnychronous regrade has gone through (read: hard to know how long to ask folks to wait), will enter with the correct nonzero denominator.
Automation decided that this CR belongs to your project. Please let Incident Management team know if that is not the case.