RocksStorage: deadlock when dropping database with indexes

XMLWordPrintableJSON

    • ALL
    • Hide

      run unit test jstests/core/dbcase.js with RocksDB experiment engine.

      Show
      run unit test jstests/core/dbcase.js with RocksDB experiment engine.
    • None
    • 3
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      I saw rocks storage deadlock when trying to acquire RocksEngine::_entryMapMutex twice. Here is the call stack
      ...
      #7 mongo::RocksEngine::getIndexColumnFamily at src/mongo/db/storage/rocks/rocks_engine.cpp:224
      #8 mongo::RocksCollectionCatalogEntry::removeIndex at src/mongo/db/storage/rocks/rocks_collection_catalog_entry.cpp:121
      #9 mongo::RocksEngine::_dropCollection_inlock at src/mongo/db/storage/rocks/rocks_engine.cpp:348
      #10 mongo::RocksEngine::dropDatabase at src/mongo/db/storage/rocks/rocks_engine.cpp:188
      ...
      In dropDatabase(), _entryMapMutex is already acquired but in getIndexColumnFamily() it tries to acquire _entryMapMutex agin.

              Assignee:
              Kaloian Manassiev
              Reporter:
              Siying Dong
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: