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

Incorrect diskloc tracking when migrations exceed max BSON size

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • 1.8.0
    • Affects Version/s: None
    • Component/s: Sharding
    • None
    • ALL

      When migrated BSON objects hit size limit, i.e.:

      a.len() + o.objsize() + 1024 > BSONObjMaxUserSize

      the iterator is decremented. When this iterator is used to erase disk locations, as in:

      _cloneLocs.erase( _cloneLocs.begin() , i )

      the semantics is to erase from [beginning to end) (note open end of interval). Therefore, the last disk loc returned will not be removed from the list, and extra objects will be returned. In the worst case when the objects are individually very large, the migration will send unlimited amounts of data since the disk locations will never increment.

        1. migrateBigger.js
          1 kB
          Greg Studer

            Assignee:
            eliot Eliot Horowitz (Inactive)
            Reporter:
            greg_10gen Greg Studer
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: