Uploaded image for project: 'Java Driver'
  1. Java Driver
  2. JAVA-5107

Fix race condition in ClientSession#close

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Minor - P4 Minor - P4
    • 4.11.0
    • Affects Version/s: None
    • Component/s: Sessions
    • None
    • Fully Compatible
    • 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?

      The sessions specification says that ClientSession should not attempt to implement any thread safety guarantees, and the Java driver does not do so. But the interpretation of that with respect to ClientSession#close leads to a race condition if multiple threads call the method concurrently on the same instance. This race can lead to duplicate server sessions added to the server session pool, which is undesirable.

      The driver should protect against this in ClientSession#close by using proper thread synchronization (e.g. AtomicBoolean#compareAndSet.

            Assignee:
            jeff.yemin@mongodb.com Jeffrey Yemin
            Reporter:
            jeff.yemin@mongodb.com Jeffrey Yemin
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: