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

Decouple the interfaces of the OpObserverRegistry, the generic OpObservers, and the ReplicationOpObserver

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

      The ReplicationOpObserver is fundamentally special. It is responsible for generating OpTimes and writing oplog entries. No other OpObserver should ever generate an OpTime or oplog entry. Currently all OpObservers and the OpObserverRegistry implement the OpObserver interface, which includes returning OpTimes for some (but not all) observer methods, even though the majority of OpObservers must not generate optimes and thus always return null optimes.

      Rather than trying to coerce these different objects into having the same interface, we should acknowledge that the OpObserverRegistry isn't an OpObserver, and the ReplicationOpObserver is different from all other OpObservers. This would allow the ReplicationOpObserver and the OpObserverRegistry to return OpTimes as needed, without complicating the API for the rest of the generic OpObservers

            Assignee:
            backlog-server-repl [DO NOT USE] Backlog - Replication Team
            Reporter:
            spencer@mongodb.com Spencer Brody (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: