Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-58988

Avoid sync source selection cycle during primary catchup.

    • Fully Compatible
    • v5.0, v4.4, v4.2
    • Repl 2021-08-23, Repl 2021-09-06

      During primary catchup, the primary does not necessarily sync from the most up-to-date node, we assume its sync source will sync from a more up-to-date node. However in some cases, the primary that is doing catchup can end up in a situation that it is syncing from a node who in turn selects this primary as sync source. This forms a sync source selection cycle and if this sync source node is not up-to-date in primary's view, then the primary can never be able to catchup to the target opTime, which causes a long unavailability window.

      If this happens, we rely on catchupTimeout (by default infinite), catchup takeover (by default 30s) or manual abort to bail it out, but the long unavailability window is undesirable.

            wenbin.zhu@mongodb.com Wenbin Zhu
            wenbin.zhu@mongodb.com Wenbin Zhu
            0 Vote for this issue
            8 Start watching this issue