1) syncFixup() // rollback + Truncates the oplog.
---> ***Unclean shutdown happens here***
2) incrementRollbackID() // Persists the updated Rollback ID.
On node restart, since we have truncated the oplog, the node doesn't transition to rollback state again. So, we don't increment the rollback id. This can lead to nodes silently completing the rollback without the other nodes knowing about it.
There are places in rollback and initial sync, we do check that sync source haven't rolled back during the process of rollback/initial sync using this rollback id. so, its necessary to update the rollback id on rollback success.
Note: It's not problem for rollback via RTT as we currently increment the rollback id before the rollback start/oplog truncation.