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

sessions_test and sharding_catalog_manager_test don't destroy all Clients before destroying the ServiceContext

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 4.0.3, 4.1.1
    • Component/s: Internal Code
    • Labels:
      None
    • Backwards Compatibility:
      Fully Compatible
    • Operating System:
      ALL
    • Sprint:
      TIG 2018-07-16
    • Linked BF Score:
      46

      Description

      session_catalog_test.cpp and sharding_catalog_manager_add_shard_test.cpp use Client::initThreadIfNotAlready() in async code but are missing a corresponding ON_BLOCK_EXIT([&] { Client::destroy(); }) which became required as part of SERVER-34798. For reasons that I don't quite understand the _clients.empty() invariant is only triggered on Windows.

          stdx::async(stdx::launch::async, [&] {
              Client::initThreadIfNotAlready();
              auto sideOpCtx = Client::getCurrent()->makeOperationContext();
              auto scopedSession =
                  SessionCatalog::get(sideOpCtx.get())->getOrCreateSession(sideOpCtx.get(), lsid);
       
              ASSERT(scopedSession.get());
              ASSERT_EQ(lsid, scopedSession->getSessionId());
          }).get();
       
          ocs.reset();
       
          stdx::async(stdx::launch::async, [&] {
              Client::initThreadIfNotAlready();
              auto sideOpCtx = Client::getCurrent()->makeOperationContext();
              auto scopedSession =
                  SessionCatalog::get(sideOpCtx.get())->getOrCreateSession(sideOpCtx.get(), lsid);
       
              ASSERT(scopedSession.get());
              ASSERT_EQ(lsid, scopedSession->getSessionId());
          }).get();
      

      https://github.com/mongodb/mongo/blob/a6e2c10af2dcfa862c6afa0fb1504a5d2b092d09/src/mongo/db/session_catalog_test.cpp#L122-L142
      https://github.com/mongodb/mongo/blob/a6e2c10af2dcfa862c6afa0fb1504a5d2b092d09/src/mongo/db/s/config/sharding_catalog_manager_add_shard_test.cpp#L407

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              max.hirschhorn Max Hirschhorn
              Reporter:
              max.hirschhorn Max Hirschhorn
              Participants:
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: