Incorrect diskloc tracking when migrations exceed max BSON size

XMLWordPrintableJSON

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

      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.

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

              Created:
              Updated:
              Resolved: