Gradebook override expected behavior

Description

Hello!

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.

Learner's usernames:

  • aingles

  • jwarnky

  • MTynski4

  • waldropj

  • wood184

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

None

Current Behavior

None

Expected Behavior

None

Reason for Variance

None

Release Notes

None

User Impact Summary

None

Activity

Show:
Matthew Hughes
February 26, 2021, 7:12 PM

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.

Code references:

  1. Whenever we add a grade override, we issue a signal SUBSECTION_OVERRIDE_CHANGED after adding the override.

  2. One of the handlers of that signal is enqueue_subsection_update, which does what it sounds like.

Jira Misc Workflow Extensions
February 25, 2021, 11:06 PM

Hi ,
Automation decided that this CR belongs to your project. Please let Incident Management team know if that is not the case.

Done

Assignee

Matthew Hughes

Reporter

Julia Song

Reach

Group(s)

Impact

None

Platform Area

None

Customer

None

Partner Manager

None

URL

None

Contributor Name

None

Groups with Read-Only Access

None

Story Points

None

Actual Points

None

Category of Work

None

Platform Map Area (Levels 1 & 2)

Educator Experiences - Program Operations / Console

Platform Map Area (Levels 3 & 4)

Grading Tools

Priority

CAT-4