The return value of the doCompactOperation is assigned to the member variable _response, which is in-memory state that is not persisted by the coordinator. Since this variable is being assigned in the penultimate kCompactStructuredEncryptionData phase of _runImpl, it is possible to lose this data if a stepdown occurs while in the middle of the final phase. And when the new primary resumes, it'll have an invalid _response value, which may cause an invariant failure.
NOTE: this ticket was created separately from
SERVER-67796 to address the same issue in 6.0. Instead of a BACKPORT of SERVER-67796, a standalone ticket is needed since the fix to this issue in 6.1 is not compatible with 6.0, and an alternate fix is needed to resolve this invariant issue.
- is related to
SERVER-67796 Persist the result of the doCompactOperation in the compaction coordinator