[SERVER-34175] RollbackImpl::_summarizeRollback() should not throw Created: 28/Mar/18 Updated: 29/Mar/18 Resolved: 29/Mar/18 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Replication |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Kyle Suarez | Assignee: | Kyle Suarez |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||
| Operating System: | ALL | ||||
| Sprint: | Repl 2018-04-09 | ||||
| Participants: | |||||
| Linked BF Score: | 60 | ||||
| Description |
|
When RollbackImpl::runRollback() exits, we log a rollback summary by calling RollbackImpl::_summarizeRollback() within an ON_BLOCK_EXIT scope guard. This method calls OplogInterfaceRemote::toString(), which can throw if the remote host is unreachable. The uncaught exception then triggers a std::terminate. The failure manifests as a hang when running rollback_with_socket_error_then_steady_state.js in the replica_sets_auth suite. |
| Comments |
| Comment by Kyle Suarez [ 29/Mar/18 ] |
|
Rather than wrapping in a try-catch, we're just going to add a new way to introspect the HostAndPort of the server on the OplogInterface. See |