Uploaded image for project: 'Node.js Driver'
  1. Node.js Driver
  2. NODE-5770

Remove controller overwrite in Connection.sendCommand

    • Type: Icon: Task Task
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • Not Needed
    • Hide

      1. What would you like to communicate to the user about this feature?
      2. Would you like the user to see examples of the syntax and/or executable code and its output?
      3. Which versions of the driver/connector does this apply to?

      Show
      1. What would you like to communicate to the user about this feature? 2. Would you like the user to see examples of the syntax and/or executable code and its output? 3. Which versions of the driver/connector does this apply to?

      Use Case

      As a Node.js driver engineer
      I want to simplify signal handling code
      So that it is easy to avoid memory leaks

      Currently, it is necessary to overwrite the controller saved to the Connection class because the events.on async generator helper does not remove the abort listener it attaches to its given signal, and there is no way to remove it from the caller.

      User Impact

      • None (maybe a small performance improvement)

      Dependencies

      • Connection layer

      Unknowns

      • The precise solution needed to avoid this hack

      Acceptance Criteria

      Implementation Requirements

      • Remove the creation of a new AbortController on every sendCommand call

      Testing Requirements

      • The AbortSignal passed to read/write methods must not have an unbounded growth of abort listeners

      Documentation Requirements

      • None

      Follow Up Requirements

      • None

            Assignee:
            Unassigned Unassigned
            Reporter:
            neal.beeken@mongodb.com Neal Beeken
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: