Some Epics are displaying twice in roadmap as child epics and top-level epics

Summary

A customer reported that the Epics roadmap for a group shows some epics twice: both as children of their parent epics (correct) and as top-level epics (incorrect).

The problematic sub-epics (3rd level) were children of another (2nd level) sub-epic which did not have assigned start / end dates. Assigning start/end dates to the middle-level sub-epic caused its children to be displayed correctly.

Ticket:(Internal Link)

Steps to reproduce

  • Create a parent epic A
  • Add 2 child epic (a,b) to the parent epic (A), but leave child b without a start and end date.
  • Add 2 child epics (i, ii) to the to the child epic (a)
  • Add the same child epics (i, ii) to child epic (b)
  • Check the roadmap

Alternative steps to reproduce

  • Create three levels of nested epics, A -> B -> C, where (A) is top level, (C) is bottom,
  • Ensure A and C have start and due date assigned,
  • Ensure B has no inherited dates but both set to Fixed: None in the UI,
  • View the Roadmap and see (B) at the top level.

Example Project

What is the current bug behavior?

Some child epics twice are displayed twice in the roadmap; both as children of their parent epics and as top-level epics.

What is the expected correct behavior?

The child epics should only be displayed once and not as top-level epics

Relevant logs and/or screenshots

Output of checks

Results of GitLab environment info

Expand for output related to GitLab environment info

(For installations with omnibus-gitlab package run and paste the output of:
`sudo gitlab-rake gitlab:env:info`)

(For installations from source run and paste the output of:
`sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production`)

Results of GitLab application Check

Expand for output related to the GitLab application check

(For installations with omnibus-gitlab package run and paste the output of: sudo gitlab-rake gitlab:check SANITIZE=true)

(For installations from source run and paste the output of: sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production SANITIZE=true)

(we will only investigate if the tests are passing)

Possible fixes

The GraphQL query appears to return mid-level epics as top-level when the criteria in steps to reproduce are met. This shouldn't happen.

Proposal

  1. GraphQL query is update to support returning only top-level epics backend
  2. Client issues a request for only top-level epics in the first instance. frontend
Edited by John Hope