Provided by: libmongoc-doc_1.9.2+dfsg-1build1_all bug

NAME

       mongoc_errors - Error Reporting « index

DESCRIPTION

       Many  C  Driver functions report errors by returning false or -1 and filling out a bson_error_t structure
       with an error domain, error code, and message. Use domain to  determine  which  subsystem  generated  the
       error, and code for the specific error. message is a human-readable error description.

       See also: Handling Errors in libbson.

    ┌──────────────────────────────┬────────────────────────────────────────────┬───────────────────────────────────┐
    │Domain                        │ Code                                       │ Description                       │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │MONGOC_ERROR_CLIENTMONGOC_ERROR_CLIENT_TOO_BIG                │ You  tried to send a message      │
    │                              │                                            │ larger than the server's max      │
    │                              │                                            │ message size.                     │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │                              │ MONGOC_ERROR_CLIENT_AUTHENTICATE           │ Wrong    credentials,     or      │
    │                              │                                            │ failure sending or receiving      │
    │                              │                                            │ authentication messages.          │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │                              │ MONGOC_ERROR_CLIENT_NO_ACCEPTABLE_PEER     │ You  tried an SSL connection      │
    │                              │                                            │ but the driver was not built      │
    │                              │                                            │ with SSL.                         │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │                              │ MONGOC_ERROR_CLIENT_IN_EXHAUST             │ You   began   iterating   an      │
    │                              │                                            │ exhaust cursor,  then  tried      │
    │                              │                                            │ to  begin  another operation      │
    │                              │                                            │ with        the         same      │
    │                              │                                            │ mongoc_client_t.                  │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │                              │ MONGOC_ERROR_CLIENT_SESSION_FAILURE        │ Failure  related to creating      │
    │                              │                                            │ or using a logical session.       │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │MONGOC_ERROR_STREAMMONGOC_ERROR_STREAM_NAME_RESOLUTION        │ DNS failure.                      │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │                              │ MONGOC_ERROR_STREAM_SOCKET                 │ Timeout  communicating  with      │
    │                              │                                            │ server,     or    connection      │
    │                              │                                            │ closed.                           │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │                              │ MONGOC_ERROR_STREAM_CONNECT                │ Failed to connect to server.      │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │MONGOC_ERROR_PROTOCOLMONGOC_ERROR_PROTOCOL_INVALID_REPLY        │ Corrupt    response     from      │
    │                              │                                            │ server.                           │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │                              │ MONGOC_ERROR_PROTOCOL_BAD_WIRE_VERSION     │ The  server  version  is too      │
    │                              │                                            │ old   or    too    new    to      │
    │                              │                                            │ communicate with the driver.      │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │MONGOC_ERROR_CURSORMONGOC_ERROR_CURSOR_INVALID_CURSOR         │ You  passed bad arguments to      │
    │                              │                                            │ mongoc_collection_find_with_opts, │
    │                              │                                            │ or         you        called      │
    │                              │                                            │ mongoc_cursor_next   on    a      │
    │                              │                                            │ completed  or failed cursor,      │
    │                              │                                            │ or the cursor timed  out  on      │
    │                              │                                            │ the server.                       │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │                              │ MONGOC_ERROR_CHANGE_STREAM_NO_RESUME_TOKEN │ A resume token was  not  returned │
    │                              │                                            │ in    a   document   found   with │
    │                              │                                            │ mongoc_change_stream_next         │
    └──────────────────────────────┴────────────────────────────────────────────┴───────────────────────────────────┘

    │MONGOC_ERROR_QUERYMONGOC_ERROR_QUERY_FAILUREError API Version 1: Server error │
    │                              │                                            │ from command or query. The server │
    │                              │                                            │ error message is in message.      │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │MONGOC_ERROR_SERVERMONGOC_ERROR_QUERY_FAILUREError API Version 2: Server error │
    │                              │                                            │ from command or query. The server │
    │                              │                                            │ error message is in message.      │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │MONGOC_ERROR_SASL             │ A SASL error code.                         │ man sasl_errors  for  a  list  of │
    │                              │                                            │ codes.                            │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │MONGOC_ERROR_BSONMONGOC_ERROR_BSON_INVALID                  │ You    passed   an   invalid   or │
    │                              │                                            │ oversized  BSON  document  as   a │
    │                              │                                            │ parameter,        or       called │
    │                              │                                            │ mongoc_collection_create_index    │
    │                              │                                            │ with  invalid keys, or the server │
    │                              │                                            │ reply was corrupt.                │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │MONGOC_ERROR_NAMESPACEMONGOC_ERROR_NAMESPACE_INVALID             │ You tried to create a  collection │
    │                              │                                            │ with an invalid name.             │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │MONGOC_ERROR_COMMANDMONGOC_ERROR_COMMAND_INVALID_ARG           │ Many  functions  set  this  error │
    │                              │                                            │ code when passed bad  parameters. │
    │                              │                                            │ Print   the   error  message  for │
    │                              │                                            │ details.                          │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │                              │ MONGOC_ERROR_PROTOCOL_BAD_WIRE_VERSION     │ You tried to use a command option │
    │                              │                                            │ the server does not support.      │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │                              │ MONGOC_ERROR_DUPLICATE_KEY                 │ An   insert   or   update  failed │
    │                              │                                            │ because because  of  a  duplicate │
    │                              │                                            │ _id    or    other   unique-index │
    │                              │                                            │ violation.                        │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │MONGOC_ERROR_COMMANDError code from server.                    │ Error API Version 1: Server error │
    │                              │                                            │ from  a command. The server error │
    │                              │                                            │ message is in message.            │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │MONGOC_ERROR_SERVERError code from server.                    │ Error API Version 2: Server error │
    │                              │                                            │ from  a command. The server error │
    │                              │                                            │ message is in message.            │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │MONGOC_ERROR_COLLECTIONMONGOC_ERROR_COLLECTION_INSERT_FAILED,     │ Invalid   or   empty   input   to │
    │                              │ MONGOC_ERROR_COLLECTION_UPDATE_FAILED,     │ mongoc_collection_insert_one,     │
    │                              │ MONGOC_ERROR_COLLECTION_DELETE_FAILED.     │ mongoc_collection_insert_bulk,    │
    │                              │                                            │ mongoc_collection_update_one,     │
    │                              │                                            │ mongoc_collection_update_many,    │
    │                              │                                            │ mongoc_collection_replace_one,    │
    │                              │                                            │ mongoc_collection_delete_one,  or │
    │                              │                                            │ mongoc_collection_delete_many.    │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │MONGOC_ERROR_COLLECTIONError code from server.                    │ Error API Version 1: Server error │
    │                              │                                            │ from                              │
    │                              │                                            │ mongoc_collection_insert_one,     │
    │                              │                                            │ mongoc_collection_insert_bulk,    │
    │                              │                                            │ mongoc_collection_update_one,     │
    │                              │                                            │ mongoc_collection_update_many,    │
    │                              │                                            │ mongoc_collection_replace_one,    │
    │                              │                                            │ mongoc_collection_delete_one,  or │
    │                              │                                            │ mongoc_collection_delete_many.    │
    └──────────────────────────────┴────────────────────────────────────────────┴───────────────────────────────────┘

    │MONGOC_ERROR_SERVERError code from server.                    │ Error API Version 2: Server error │
    │                              │                                            │ from                              │
    │                              │                                            │ mongoc_collection_insert_one,     │
    │                              │                                            │ mongoc_collection_insert_bulk,    │
    │                              │                                            │ mongoc_collection_update_one,     │
    │                              │                                            │ mongoc_collection_update_many,    │
    │                              │                                            │ mongoc_collection_replace_one,    │
    │                              │                                            │ mongoc_collection_delete_one,  or │
    │                              │                                            │ mongoc_collection_delete_many.    │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │MONGOC_ERROR_GRIDFSMONGOC_ERROR_GRIDFS_CHUNK_MISSING          │ The  GridFS  file  is  missing  a │
    │                              │                                            │ document    in     its     chunks │
    │                              │                                            │ collection.                       │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │                              │ MONGOC_ERROR_GRIDFS_INVALID_FILENAME       │ You  passed  a  NULL  filename to │
    │                              │                                            │ mongoc_gridfs_remove_by_filename. │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │                              │ MONGOC_ERROR_GRIDFS_PROTOCOL_ERROR         │ You                        called │
    │                              │                                            │ mongoc_gridfs_file_set_id   after │
    │                              │                                            │ mongoc_gridfs_file_save.          │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │MONGOC_ERROR_SCRAMMONGOC_ERROR_SCRAM_PROTOCOL_ERROR          │ Failure      in       SCRAM-SHA-1 │
    │                              │                                            │ authentication.                   │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │MONGOC_ERROR_SERVER_SELECTIONMONGOC_ERROR_SERVER_SELECTION_FAILURE      │ No replica set member  or  mongos │
    │                              │                                            │ is  available,  or  none  matches │
    │                              │                                            │ your  read  preference,  or   you │
    │                              │                                            │ supplied        an        invalid │
    │                              │                                            │ mongoc_read_prefs_t.              │
    ├──────────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────┤
    │MONGOC_ERROR_WRITE_CONCERNError code from server.                    │ There was a write  concern  error │
    │                              │                                            │ or timeout from the server.       │
    └──────────────────────────────┴────────────────────────────────────────────┴───────────────────────────────────┘

SETTING THE ERROR API VERSION

       The  driver's error reporting began with a design flaw: when the error domain is MONGOC_ERROR_COLLECTION,
       MONGOC_ERROR_QUERY, or MONGOC_ERROR_COMMAND, the error code  might  originate  from  the  server  or  the
       driver.  An  application cannot always know where an error originated, and therefore cannot tell what the
       code means.

       For example, if mongoc_collection_update_one sets the error's domain to MONGOC_ERROR_COLLECTION  and  its
       code   to   24,   the   application   cannot   know   whether   24  is  the  generic  driver  error  code
       MONGOC_ERROR_COLLECTION_UPDATE_FAILED or the specific server error code "LockTimeout".

       To fix this flaw while preserving  backward  compatibility,  the  C  Driver  1.4  introduces  "Error  API
       Versions".  Version 1, the default Error API Version, maintains the flawed behavior. Version 2 adds a new
       error domain, MONGOC_ERROR_SERVER. In Version 2, error codes originating on the server always have  error
       domain  MONGOC_ERROR_SERVER or MONGOC_ERROR_WRITE_CONCERN. When the driver uses Version 2 the application
       can always determine the origin and meaning of error codes. New applications should use  Version  2,  and
       existing applications should be updated to use Version 2 as well.

        ┌────────────────────────────────────────────┬────────────────────────────┬────────────────────────────┐
        │Error Source                                │ API Version 1              │ API Version 2              │
        ├────────────────────────────────────────────┼────────────────────────────┼────────────────────────────┤
        │mongoc_cursor_errorMONGOC_ERROR_QUERYMONGOC_ERROR_SERVER        │
        ├────────────────────────────────────────────┼────────────────────────────┼────────────────────────────┤
        │mongoc_client_command_with_opts,            │ MONGOC_ERROR_QUERYMONGOC_ERROR_SERVER        │
        │mongoc_database_command_with_opts,          │                            │                            │
        │and other command functions                 │                            │                            │
        ├────────────────────────────────────────────┼────────────────────────────┼────────────────────────────┤
        │mongoc_collection_count_with_optsMONGOC_ERROR_QUERYMONGOC_ERROR_SERVER        │
        │mongoc_client_get_database_names_with_opts, │                            │                            │
        │and other command helper functions          │                            │                            │
        └────────────────────────────────────────────┴────────────────────────────┴────────────────────────────┘

        │mongoc_collection_insert_oneMONGOC_ERROR_COMMANDMONGOC_ERROR_SERVER        │
        │mongoc_collection_insert_bulk               │                            │                            │
        │mongoc_collection_update_one                │                            │                            │
        │mongoc_collection_update_many               │                            │                            │
        │mongoc_collection_replace_one               │                            │                            │
        │mongoc_collection_delete_one                │                            │                            │
        │mongoc_collection_delete_many               │                            │                            │
        ├────────────────────────────────────────────┼────────────────────────────┼────────────────────────────┤
        │mongoc_bulk_operation_executeMONGOC_ERROR_COMMANDMONGOC_ERROR_SERVER        │
        ├────────────────────────────────────────────┼────────────────────────────┼────────────────────────────┤
        │Write-concern timeout                       │ MONGOC_ERROR_WRITE_CONCERNMONGOC_ERROR_WRITE_CONCERN │
        └────────────────────────────────────────────┴────────────────────────────┴────────────────────────────┘

       The  Error  API Versions are defined with MONGOC_ERROR_API_VERSION_LEGACY and MONGOC_ERROR_API_VERSION_2.
       Set the version with mongoc_client_set_error_api or mongoc_client_pool_set_error_api.

SEE ALSO

       MongoDB Server Error Codes

AUTHOR

       MongoDB, Inc

COPYRIGHT

       2018, MongoDB, Inc