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

Improve synchronization between two fail points

    • Type: Icon: Improvement Improvement
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: Replication
    • Replication

      Currently, in order to synchronize two fail points, we have to call checkLog and sometimes clearLog to verify when a failpoint has started to know when we can safely start performing test asserts if we want to validate the intermediary states of an operation.

      The existing syntax can often be very verbose and not very intuitive. We propose extending the current configureFailPoint command to allow specifying more explicit relationships between failpoints, more specifically that a failpoint will be able to signal other failpoints or also wait for a specific signal to be broadcasted before unblocking itself.

      Proposed syntax:

      {configureFailPoint: “failpoint1”, mode: “<mode>”, sync: {signals: [signal1, signal2], waitFor: [signal3, signal4], timeout: 100, clearSignal: <true/false>}}
      

      With the above syntax, failpoint1 will emit signals signal1 and signal2, and then block itself until signal3 and signal4 are broadcasted or timeout after 100 seconds. The clearSignal boolean indicates whether signal3 and signal4 should be cleared once they are consumed.

      Reference: https://mariadb.com/kb/en/the-debug-sync-facility/

            Assignee:
            backlog-server-repl [DO NOT USE] Backlog - Replication Team
            Reporter:
            jason.chan@mongodb.com Jason Chan
            Votes:
            1 Vote for this issue
            Watchers:
            12 Start watching this issue

              Created:
              Updated: