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

Refactor `ServiceEntryPointImpl` and split it into `SessionManager`

    • Type: Icon: Task Task
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 7.2.0-rc0
    • Affects Version/s: None
    • Component/s: Internal Code
    • None
    • Service Arch
    • Minor Change
    • Service Arch 2023-08-07, Service Arch 2023-09-04, Security 2023-09-18
    • 151
    • None
    • 3
    • None
    • None
    • None
    • None
    • None
    • None

      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.

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

              Created:
              Updated:
              Resolved: