Thank you for contacting MongoDB. We understand that one member of a 3-member replica set was in recovering for 2 weeks, but your .NET Core application continued to read from this node.
If you connect to a replica set with the .NET/C# driver, it will select a replica set node to read from based on the configured read preference for the operation (possibly defaulted from the connection string). Even if the driver selected a recovering node due to stale topology information, the recovering
mongod instance will not service reads and instead will return an error similar to the following:
"errmsg": "node is recovering",
To read from a recovering node for data recovery purposes, you would have to restart the node as a standalone on a different port and then connect directly to that standalone node on that new port.
To answer your questions:
- Not only will the .NET/C# driver not select a recovering node, but even if it did, that node would refuse read and write operations instead returning an error.
- Ruling out recovering nodes should be done automatically by both the driver and the
If you are seeing different behaviour than described above, please provide a self-contained reproduction of the issue so that we can investigate further.