The call to relinquish() does nothing good, and causes two bugs:
1. It is possible to transition from STARTUP2 to RECOVERING early, which causes incorrect RS logic later.
2. The call to relinquish() attempts to grab a global write lock while holding the rs mutex, which may delay heartbeats and elections if a long-running write operation (such as a foreground index build) is already in progress.