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

Refactor `ServiceEntryPointImpl` and split it into `SessionManager`

    XMLWordPrintableJSON

Details

    • Icon: Task Task
    • Resolution: Fixed
    • Icon: Major - P3 Major - P3
    • 7.2.0-rc0
    • None
    • Internal Code
    • None
    • Service Arch
    • Minor Change
    • Service Arch 2023-08-07, Service Arch 2023-09-04, Security 2023-09-18
    • 151

    Description

      The base class for ServiceEntryPoint is mixing two separate services:

      • SessionManager that should be responsible for accepting new connections/streams and providing them with their own instance of SessionWorkflow. All the virtual interfaces defined by the base class concern managing sessions, except for two: handleRequest and slowSessionWorkflowLogSeverity.
      • ServiceEntryPoint that should provide the interface for accessing the database (e.g., through ServiceEntryPointCommon::handleRequest).

      We should reorganize this hierarchy by:

      • Splitting SessionManager into its own class, and having ServiceContext own a single instance of SessionManager. Initially, we'll only need two implementations of SessionManager since mongod and mongos have slightly different implementations for this class today. We also need to implement an extension for Mongo embedded similar to how it's implemented today.
      • Merging ServiceEntryPointCommon with ServiceEntryPoint, and making ServiceEntryPointMongod, ServiceEntryPointEmbedded, and ServiceEntryPointMongos have that as their base class.

      There are also three tests that must be adjusted as part of this modification/refactoring.

      Attachments

        Activity

          People

            sara.golemon@mongodb.com Sara Golemon
            amirsaman.memaripour@mongodb.com Amirsaman Memaripour
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: