We have several classes which use opObservers to keep in-memory state in sync with storage state. These include sharding state, authorization, tenant migration mtabs, maybe others. These will be run during logical initial sync when the system isn't necessarily consistent, and will not be run during file copy based initial sync. Both initial syncs have special code to fix some of these after the system is consistent. We should create a mechanism (either another opObserver, or expanding/renaming the onReplicationRollback opObserver) to handle fixing these cases after initial sync generally.
We might also consider not running the ordinary op observers during initial sync; this may require special treatment of FCV.