-
Notifications
You must be signed in to change notification settings - Fork 43
DOCSP-30350 Java Write Exception Troubleshooting #710
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
mballard-mdb
merged 26 commits into
mongodb:master
from
mballard-mdb:DOCSP-30350-java-write-exception-ts
Jun 17, 2025
Merged
Changes from 16 commits
Commits
Show all changes
26 commits
Select commit
Hold shift + click to select a range
7de199d
DOCSP-30350 Java Write Error Page
mballard-mdb 51772d1
DOCSP-30350 add to toc tree and fix links
mballard-mdb ede2dcd
DOCSP-30350 toc tree update and editing
mballard-mdb e657ce8
DOCSP-30350 code blocks and update write/bulkwrite sections
mballard-mdb 8341e97
DOCSP-30350 Updating grammar and Write/bulk Write error messages
mballard-mdb 1d219ee
DOCSP30350 fix code example format
mballard-mdb d60da9e
DOCSP-30350 code examples and additional getCategory information
mballard-mdb 2076d6b
DOCSP-30350 fixing up minor issues with page, final check
mballard-mdb 402ce2e
DOCSP30350 add exceptions not just errors to doc
mballard-mdb 11785f5
DOCSP-30350 fixing formatting
mballard-mdb 32d55d6
DOCSP-30350 Write exceptions, reorg
mballard-mdb ff68f50
DOCSP-30350 reorg again and edit writing on some descriptions
mballard-mdb e30b2ed
DOCSP30350- add quotes on strings
mballard-mdb e6fc4b6
DOCSP-30350 toc tree naming update
mballard-mdb 28c2901
DOCSP-30350 add link to schema validation page
mballard-mdb ab053b6
DOCSP-30350 schema validation link fix
mballard-mdb d4c425f
DOCSP-30350 put troubleshooting into main pages, not separate
mballard-mdb 0bead5f
DOCSP-30350 Adding descriptions and editing
mballard-mdb 2afc1d1
DOCSP-30350 fixing example headings and final edits
mballard-mdb 2922c97
DOCSP-30350 making vocab consistent, active voice
mballard-mdb 140c02d
DOCSP-30350 fix typo
mballard-mdb 763949d
DOCSP-30350 adding suggestions and API doc links
mballard-mdb 2b7584f
DOCSP-30350 small tweaks to punctuation and wording
mballard-mdb cc021ca
DOCSP-30350 final edits
mballard-mdb dd420c2
DOCSP-30350 add schema val link to bulk
mballard-mdb 4abbd49
DOCSP-30350 minor change tech reivew clarify schema validation
mballard-mdb File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,132 @@ | ||
.. _java-operation-errors: | ||
|
||
================================ | ||
Troubleshooting Write Exceptions | ||
================================ | ||
|
||
.. meta:: | ||
:description: Understand how to handle write exceptions in the MongoDB Java Sync Driver, including error types like WriteError and BulkWriteError. | ||
|
||
.. contents:: | ||
:local: | ||
:backlinks: none | ||
:depth: 2 | ||
:class: singlecol | ||
|
||
Overview | ||
-------- | ||
|
||
This page describes write exceptions you might encounter when | ||
using the {+driver-long+} to perform MongoDB write operations. Once you | ||
understand the types of write exceptions that the driver raises, you can take | ||
appropriate actions to either handle them or correct the error-causing code. | ||
|
||
.. note:: | ||
|
||
This page addresses only write exception handling. If you encounter | ||
any other issues with MongoDB or the driver, visit the following | ||
resources: | ||
|
||
- :ref:`java-connection-troubleshooting` for potential solutions to issues | ||
you might encounter when connecting to a MongoDB deployment | ||
- :ref:`java-issues-and-help` page for information about reporting bugs, | ||
contributing to the driver, and finding more resources | ||
- :community-forum:`MongoDB Community Forums </tag/java>` for questions, | ||
discussions, or general technical support | ||
|
||
Write Error | ||
----------- | ||
|
||
If the driver encounters an error while performing a write operation, it | ||
creates an error of the `WriteError <{+core-api+}/WriteError.html>`__ type. | ||
|
||
The ``WriteError`` type contains the following fields: | ||
|
||
- ``code``: the code associated with the error | ||
- ``message``: a message explaining the error | ||
- ``details``: an optional field containing details associated with the error | ||
|
||
.. _java_error_write_exceptions: | ||
|
||
Write Exception Types | ||
--------------------- | ||
|
||
The driver creates write exceptions when a ``WriteError`` object is created. The | ||
driver raises a `MongoWriteException <{+core-api+}/MongoWriteException.html>`__ | ||
for any write errors that occur when performing single write operations. If an | ||
error is detected during a bulk write operation, a `MongoBulkWriteException | ||
<{+core-api+}/MongoBulkWriteException.html>`__ is thrown. | ||
|
||
A ``MongoWriteException`` object contains an ``error`` field containing the | ||
``WriteError`` object that caused it. A ``MongoBulkWriteException`` contains a | ||
``writeErrors`` field containing a list of one or more ``WriteError`` objects | ||
associated with the same bulk write operation. | ||
|
||
Write Exception | ||
~~~~~~~~~~~~~~~ | ||
|
||
For example, the driver raises a ``MongoWriteException`` if you | ||
attempt to insert a document into a collection that violates the collection's | ||
schema validation rules. Suppose the collection has a rule where the value of | ||
the ``quantity`` field must be an ``int`` type. If you attempt to insert a | ||
document where the value of ``quantity`` is ``"three"``, the driver prints the | ||
following error message: | ||
|
||
.. code-block:: none | ||
:copyable: false | ||
:emphasize-lines: 1, 4-7 | ||
|
||
Exception in thread "main" com.mongodb.MongoWriteException: Document failed validation at | ||
com.mongodb.internal.connection.ProtocolHelper.getWriteException(ProtocolHelper.java:228) | ||
... | ||
Caused by: com.mongodb.MongoWriteException: WriteError{code=121, | ||
message='Document failed validation', details={ operator: "$jsonSchema", | ||
schemaRules: { bsonType: "int", description: "must be an integer" }, | ||
offendingDocument: {"name":"Apple","quantity":"three"} } } at | ||
com.mongodb.internal.connection.WriteResultHelper.createWriteException(WriteResultHelper.java:50) | ||
|
||
In the preceding error message, the ``MongoWriteException`` object provides a | ||
high-level description of the error. The ``WriteError`` object provides details | ||
on the failed operation, such as the schema rules and the offending document. To | ||
address this error, you must either revise the document to adhere to the schema | ||
validation rules or bypass validation. | ||
|
||
To learn more about schema validation, see :manual:`Schema Validation </core/schema-validation/>` in the Server Manual. | ||
|
||
Bulk Write Exception | ||
~~~~~~~~~~~~~~~~~~~~ | ||
|
||
Using the previous example, if you now attempt to insert two documents that | ||
violate the collection's schema, one with a ``quantity`` of ``"three"`` and another | ||
with a ``quantity`` of ``"ten"``, the driver prints the following error message: | ||
|
||
.. code-block:: none | ||
:copyable: false | ||
:emphasize-lines: 1-2, 6-9, 13-16 | ||
|
||
Exception in thread "main" com.mongodb.MongoBulkWriteException: Bulk write | ||
operation result had errors at | ||
com.mongodb.internal.connection.ProtocolHelper.getBulkWriteException(ProtocolHelper.java:258) | ||
... at | ||
BulkWriteMultipleValidationErrorsExample.main(BulkWriteMultipleValidationErrorsExample.java:30) | ||
Caused by: com.mongodb.MongoWriteException: WriteError{code=121, | ||
message='Document failed validation', details={ operator: "$jsonSchema", | ||
schemaRules: { bsonType: "int", description: "must be an integer" }, | ||
offendingDocument: {"name":"Apple","quantity":"three"} }} at | ||
com.mongodb.internal.connection.WriteResultHelper.createWriteException(WriteResultHelper.java:50) | ||
at com.mongodb.internal.connection.ProtocolHelper.getBulkWriteException(ProtocolHelper.java:254) | ||
... 19 more | ||
Caused by: com.mongodb.MongoWriteException: WriteError{code=121, | ||
message='Document failed validation', details={ operator: "$jsonSchema", | ||
schemaRules: { bsonType: "int", description: "must be an integer" }, | ||
offendingDocument: {"name":"Banana","quantity":"ten"} }} at | ||
com.mongodb.internal.connection.WriteResultHelper.createWriteException(WriteResultHelper.java:50) | ||
at | ||
com.mongodb.internal.connection.ProtocolHelper.getBulkWriteException(ProtocolHelper.java:254) | ||
... 19 more | ||
|
||
This exception message contains a list of the two ``WriteError`` objects. The | ||
description in the ``MongoBulkWriteException`` object is vague as | ||
documents associated with the same bulk operation could produce different error | ||
types. Refer to the individual ``WriteError`` objects' ``message`` fields to | ||
determine the cause of each error. |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.