{"record":{"id":"77008e5c343ce0fc","repo":"instructure/canvas-lms","slug":"parent-assignment-group-override-not-found-for-group-group","errorCode":null,"errorMessage":"Parent assignment Group override not found for group %{group_id}","messagePattern":"Parent assignment Group override not found for group %(.+?)","errorType":"validation","errorClass":"PeerReview::ParentOverrideNotFoundError","httpStatus":null,"severity":"error","filePath":"app/services/peer_review/validations.rb","lineNumber":258,"sourceCode":"  end\n\n  def validate_adhoc_parent_override_exists(parent_override, student_ids)\n    unless parent_override.present?\n      raise PeerReview::ParentOverrideNotFoundError,\n            I18n.t(\"Parent assignment ADHOC override not found for students %{student_ids}\", student_ids: student_ids.join(\", \"))\n    end\n  end\n\n  def validate_course_parent_override_exists(parent_override, course_id)\n    unless parent_override.present?\n      raise PeerReview::ParentOverrideNotFoundError,\n            I18n.t(\"Parent assignment Course override not found for course %{course_id}\", course_id:)\n    end\n  end\n\n  def validate_group_parent_override_exists(parent_override, group_id)\n    unless parent_override.present?\n      raise PeerReview::ParentOverrideNotFoundError,\n            I18n.t(\"Parent assignment Group override not found for group %{group_id}\", group_id:)\n    end\n  end\n\n  def validate_section_parent_override_exists(parent_override, section_id)\n    unless parent_override.present?\n      raise PeerReview::ParentOverrideNotFoundError,\n            I18n.t(\"Parent assignment Section override not found for section %{section_id}\", section_id:)\n    end\n  end\nend\n","sourceCodeStart":240,"sourceCodeEnd":270,"githubUrl":"https://github.com/instructure/canvas-lms/blob/1c9f0bb8013ed69c4f2efe11fd483025469b7e6c/app/services/peer_review/validations.rb#L240-L270","documentation":"PeerReview::ParentOverrideNotFoundError raised when validate_group_parent_override_exists cannot find the parent Group override for the given group_id. Child peer-review overrides require an existing parent override to attach to.","triggerScenarios":"Creating a peer-review group child override whose parent Group override does not exist — the group was added to the category after parents were generated, or the parent was deleted.","commonSituations":"New groups created after the parent-override generation ran; group moved between categories; parent overrides pruned by a cleanup job; wrong group_id passed.","solutions":["Regenerate/re-run parent override creation for the group category so each group has a parent override","Verify group_id is correct and the group belongs to the assignment's group category","Create the missing parent Group override explicitly before the child override","Check for cleanup jobs or callbacks that delete group overrides and re-run them"],"exampleFix":"// before\nPeerReview::CreateChildOverride.call(parent_override: nil, group_id: group.id)\n// after\nparent = PeerReview::EnsureGroupParentOverride.call(assignment:, group:)\nPeerReview::CreateChildOverride.call(parent_override: parent, group_id: group.id)","handlingStrategy":"validation","validationCode":"parent = assignment.assignment_overrides.active.find_by(set_type: 'Group', set_id: group_id)\nraise ArgumentError, 'missing parent group override' unless parent","typeGuard":"null","tryCatchPattern":"begin\n  PeerReview::CreateChildOverride.call(parent_override:, group_id:)\nrescue PeerReview::ParentOverrideNotFoundError\n  # regenerate parent overrides for the group category, then retry\nend","preventionTips":["Hook parent-override creation into group creation callbacks","Re-run parent provisioning whenever groups are added to the category","Validate group_id belongs to the assignment's group category first"],"tags":["ruby","rails","peer-review","overrides","groups","not-found"],"backgroundTag":"record-not-found","analyzedSha":"1c9f0bb8013ed69c4f2efe11fd483025469b7e6c","analyzedAt":"2026-09-15T20:33:18.891Z","contentChangedAt":"2026-09-15T20:33:18.891Z","schemaVersion":2},"datasetVersion":"2026-09-23T02:17:17.105Z"}