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

Refactor stepDown to wait for majority and electable nodes more precisely

    XMLWordPrintable

Details

    • Task
    • Status: Closed
    • Major - P3
    • Resolution: Won't Fix
    • None
    • None
    • Replication
    • None

    Description

      Currently, stepDown uses
      ThreadWaiter and WaiterGuard always keeps the waiter in the list as long as the WaiterGuard is in scope. The function's implementation is a bit confusing at the moment. What it really needs to do is to wait for majority with at least one electable node. The implementation now keeps the majority waiter in the list even though majority is satisfied, only because it wants to use the waiter list notification as an indicator of oplog changes so it can check if the majority nodes that the write has replicated to contains at least one electable node. If no, it goes back into waiting until another node's OpTime changes then re-check again to avoid polling.

      Ideally, this should wait for majority then $stepDownCheck. Or somehow combine the two rules into one.

      Attachments

        Issue Links

          Activity

            People

              backlog-server-repl Backlog - Replication Team
              lingzhi.deng@mongodb.com Lingzhi Deng
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: