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

Have FTDC code paths obtain locks with a timeout.

    • Type: Icon: Improvement Improvement
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 4.7.0, 4.4.19
    • Affects Version/s: None
    • Component/s: Storage
    • None
    • Fully Compatible
    • v4.4
    • Execution Team 2020-01-13, Execution Team 2020-06-01, Execution Team 2020-06-15

      Currently FTDC takes out locks in two places (once when running WiredTiger and once when running with replication).
      WiredTiger: https://github.com/mongodb/mongo/blob/1dc2afc8b5ce09d88535049df2ad72adc0434cc8/src/mongo/db/storage/wiredtiger/wiredtiger_server_status.cpp#L60
      Replication: https://github.com/mongodb/mongo/blob/c1e7921e9d69bd9a37761deb58d119a324341a54/src/mongo/db/ftdc/ftdc_mongod.cpp#L47-L60 which calls into https://github.com/mongodb/mongo/blob/1dc2afc8b5ce09d88535049df2ad72adc0434cc8/src/mongo/db/stats/storage_stats.cpp#L57

      Both can wait forever which can be undesirable for FDTC. Instead it may be useful to utilize "tryLocks" such that an FTDC round can make progress and output data despite some pieces blocking.

      However such a change would also affect serverStatus output thus be an API change that can affect downstream callers.

            gregory.noma@mongodb.com Gregory Noma
            daniel.gottlieb@mongodb.com Daniel Gottlieb (Inactive)
            1 Vote for this issue
            6 Start watching this issue