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

GhostSync::percolate() should refresh dead cursors with OplogReader::tailCheck()

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Critical - P2 Critical - P2
    • 2.2.5, 2.4.3, 2.5.0
    • Affects Version/s: None
    • Component/s: Replication
    • Labels:
      None
    • ALL

      If a ClientCursor is dropped between batches (or during a batch because of an exception like kill op) the DBClientCursor for this ClientCursor will become "isDead()". If the DBClientCursor 'cursor' held by an OplogReader is dead, OplogReader::haveCursor() still returns true. In order to detect cursors, OplogReader::tailCheck() must be called. GhostSync::percolate() should call OplogReader::tailCheck() before using an old cursor in its oplog reader. Otherwise, percolate() may repeatedly attempt to read from a dead cursor and fail to see any results.

            Assignee:
            milkie@mongodb.com Eric Milkie
            Reporter:
            aaron Aaron Staple
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: