Clarify that partial cursor results must be preserved in BulkWriteException when a top-level error occurs during getMore

XMLWordPrintableJSON

    • Type: Spec Change
    • Resolution: Unresolved
    • Priority: Unknown
    • None
    • Component/s: Bulk API
    • None
    • Needed
    • $i18n.getText("admin.common.words.hide")
      Key Status/Resolution FixVersion
      CDRIVER-6350 Blocked
      CXX-3513 Blocked
      CSHARP-6072 Blocked
      GODRIVER-3945 Blocked
      JAVA-6232 Blocked
      NODE-7605 Blocked
      PYTHON-5866 Blocked
      PHPLIB-1865 Blocked
      RUBY-3896 Blocked
      RUST-2442 Blocked
      $i18n.getText("admin.common.words.show")
      #scriptField, #scriptField *{ border: 1px solid black; } #scriptField{ border-collapse: collapse; } #scriptField td { text-align: center; /* Center-align text in table cells */ } #scriptField td.key { text-align: left; /* Left-align text in the Key column */ } #scriptField a { text-decoration: none; /* Remove underlines from links */ border: none; /* Remove border from links */ } /* Add green background color to cells with FixVersion */ #scriptField td.hasFixVersion { background-color: #00FF00; /* Green color code */ } #scriptField td.willNotDo { background-color: #FF0000; /* Red color code */ } /* Center-align the first row headers */ #scriptField th { text-align: center; } Key Status/Resolution FixVersion CDRIVER-6350 Blocked CXX-3513 Blocked CSHARP-6072 Blocked GODRIVER-3945 Blocked JAVA-6232 Blocked NODE-7605 Blocked PYTHON-5866 Blocked PHPLIB-1865 Blocked RUBY-3896 Blocked RUST-2442 Blocked

      Summary

      The "Top-Level Errors" section of the client bulk write spec is ambiguous about whether individual results already retrieved from the current cursor (before a getMore fails) must be included in BulkWriteException.partialResult.

      The current wording "individual results and/or errors have already been observed" could be interpreted as covering only results from previously completed batches, not documents already read from the failing cursor. This ambiguity caused a bug in the Java driver where those partial cursor results were discarded.

      Go and C/C++ drivers preserve partial cursor results correctly.

      Motivation

      Who is the affected end user?

      Driver authors implementing MongoClient.bulkWrite.

      Is this issue urgent?

      No.

      Is this ticket only for tests?

      No — spec text clarification.

      Acceptance Criteria

      PR merged: https://github.com/mongodb/specifications/pull/1947

            Assignee:
            Jérôme Tamarelle
            Reporter:
            Jérôme Tamarelle
            Jérôme Tamarelle Jérôme Tamarelle
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: