After restoring a replicaset, if clients connect to the replicaset before the replicaset configuration is updated, the client can connect to the databases on present in the environment from where the replicaset is restored.
Let's assume we restore our "Test" replicaset to a "Dev" replicaset. The restore process does the following:
- Shuts down all mongod servers in "Dev"
- Wipes out all the files present in the dbpath and replaces them with the files from "Test".
- Restarts mongod on "Dev".
- Forces a rs.reconfig().
If a client connects to the "Dev" replicaset between the last two steps i.e. before the replicaset config is updated, it is allowed to connect to the databases present in the "Test" replicaset (as that's the replicaset config after the restore).
Since none of the mongod servers in the replicaset config are members of the configuration they are publishing (before the reconfig), it would be good if:
- The client does not accept that update
- Or the server doesn't publish that update