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

Remove UninterruptibleLockGuards in storage code to allow interruptible lock acquisition

    XMLWordPrintableJSON

Details

    • Icon: Improvement Improvement
    • Resolution: Gone away
    • Icon: Major - P3 Major - P3
    • None
    • 3.7.3
    • Storage
    • None
    • Storage Execution

    Description

      Since SERVER-32638, global and database locks can be interrupted when an OperationContext is killed. This causes any LOCK_WAITING operation to throw an AssertionException with an Interrupted error code. This includes all AutoGet helpers for databases and collection.

      The following places in the storage code have temporary UninterruptibleLockGuard s to prevent crashing due to inadequate exception handling:

      src/mongo/db/catalog/drop_database.cpp:120
      src/mongo/db/catalog/drop_database.cpp:201
      src/mongo/db/catalog/drop_database.cpp:252
      src/mongo/db/repl/storage_interface_impl.cpp:401
      src/mongo/db/repl/storage_interface_impl.cpp:424
      src/mongo/db/transaction_reaper.cpp:158

      Attachments

        Activity

          People

            backlog-server-execution Backlog - Storage Execution Team
            louis.williams@mongodb.com Louis Williams
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: