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

Optimization: tenant migration blocker should not block reads for too long

    • Type: Icon: Improvement Improvement
    • Resolution: Works as Designed
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None

      The current code is not efficient for both us and users. For the users, a blocked transactional read will likely eventually fail anyway because the migration will more likely to succeed than abort. Moreover, if the user repeats the read a bit later it may actually succeed because its cluster time will move forward.

      For us this is not efficient because we can block too many reads and face thundering herd when the migration is over. We can actually try to process what we can in the meantime.

      The solution is to fail the read after some fixed timeout (like ~1 second) with some error code that is not automatically retried and will trigger re-doing the transaction. 1 second should be enough to have sufficient backoff for us to not overload the server with retries, and short enough to not make users to complain.

            Assignee:
            jesse@mongodb.com A. Jesse Jiryu Davis
            Reporter:
            andrew.shuvalov@mongodb.com Andrew Shuvalov (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: