DefaultAsyncClientExecutor should temporarily use its own single-thread scheduler instead of using CommonExecutor

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Unresolved
    • Priority: Unknown
    • None
    • Affects Version/s: None
    • Component/s: Backpressure, Internal
    • None
    • Java Drivers
    • None
    • None
    • None
    • None
    • None
    • None

      Non-terminated global threads are a problem as described in JAVA-5643. We know that there is at least one user who suffers from it and has a workaround. That workaround handles only the global thread in PowerOfTwoBufferPool, and will break when we release backpressure with another global thread in the CommonExecutor.

      DefaultAsyncClientExecutor should temporarily stop using CommonExecutor, and use its own single-thread scheduler instead. We will pay by sometimes creating a new thread per instance of MongoClient, but we will not break the aforementioned workaround.

      When implementing this ticket, we should neither remove CommonExecutor, nor refactor DefaultAsyncClientExecutor in any significant way. The change is quite small and temporary.

      When the backpressure project is released, we will do JAVA-5643, which will fix the problem in both PowerOfTwoBufferPool and CommonExecutor, and change DefaultAsyncClientExecutor back to using CommonExecutor. It is worth adding a TODO-JAVA-5643 Java comment in the code and updating the description of JAVA-5643 so that we no forget to undo the change when working on that ticket.

            Assignee:
            Unassigned
            Reporter:
            Valentin Kavalenka
            None
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: