Remove all overlapping error domains

XMLWordPrintableJSON

    • Type: Improvement
    • Resolution: Won't Do
    • Priority: Major - P3
    • None
    • Affects Version/s: 1.17.0-beta
    • Component/s: None
    • Not Needed
    • None
    • Hide

      1. What would you like to communicate to the user about this feature?
      2. Would you like the user to see examples of the syntax and/or executable code and its output?
      3. Which versions of the driver/connector does this apply to?

      Show
      1. What would you like to communicate to the user about this feature? 2. Would you like the user to see examples of the syntax and/or executable code and its output? 3. Which versions of the driver/connector does this apply to?
    • None
    • None
    • None
    • None
    • None
    • None

      The following is a list of current error domains libmongoc can return:

                       MONGOC_ERROR_CLIENT,      1
                       MONGOC_ERROR_STREAM,      2
                     MONGOC_ERROR_PROTOCOL,      3
                       MONGOC_ERROR_CURSOR,      4
                        MONGOC_ERROR_QUERY,      5
                       MONGOC_ERROR_INSERT,      6
                         MONGOC_ERROR_SASL,      7
                         MONGOC_ERROR_BSON,      8
                      MONGOC_ERROR_MATCHER,      9
                    MONGOC_ERROR_NAMESPACE,     10
                      MONGOC_ERROR_COMMAND,     11
                   MONGOC_ERROR_COLLECTION,     12
                       MONGOC_ERROR_GRIDFS,     13
                        MONGOC_ERROR_SCRAM,     14
             MONGOC_ERROR_SERVER_SELECTION,     15
                MONGOC_ERROR_WRITE_CONCERN,     16
                       MONGOC_ERROR_SERVER,     17
                  MONGOC_ERROR_TRANSACTION,     18
       MONGOC_ERROR_CLIENT_SIDE_ENCRYPTION,     19
                           BSON_ERROR_JSON,      1
                         BSON_ERROR_READER,      2
                        BSON_ERROR_INVALID,      3 

      There are three overlapping domains:

      BSON_ERROR_JSON = MONGOC_ERROR_CLIENT

      BSON_ERROR_READER = MONGOC_ERROR_STREAM

      BSON_ERROR_INVALID = MONGOC_ERROR_PROTOCOL

      The following is a list of documented error codes. (This is not a list of all possible errors that could be returned, since server errors, or errors originating from libmongocrypt, have their own codes)

                  MONGOC_ERROR_STREAM_INVALID_TYPE,      1
                 MONGOC_ERROR_STREAM_INVALID_STATE,      2
               MONGOC_ERROR_STREAM_NAME_RESOLUTION,      3
                        MONGOC_ERROR_STREAM_SOCKET,      4
                       MONGOC_ERROR_STREAM_CONNECT,      5
               MONGOC_ERROR_STREAM_NOT_ESTABLISHED,      6
                     MONGOC_ERROR_CLIENT_NOT_READY,      7
                       MONGOC_ERROR_CLIENT_TOO_BIG,      8
                     MONGOC_ERROR_CLIENT_TOO_SMALL,      9
                      MONGOC_ERROR_CLIENT_GETNONCE,     10
                  MONGOC_ERROR_CLIENT_AUTHENTICATE,     11
            MONGOC_ERROR_CLIENT_NO_ACCEPTABLE_PEER,     12
                    MONGOC_ERROR_CLIENT_IN_EXHAUST,     13
               MONGOC_ERROR_PROTOCOL_INVALID_REPLY,     14
            MONGOC_ERROR_PROTOCOL_BAD_WIRE_VERSION,     15
                MONGOC_ERROR_CURSOR_INVALID_CURSOR,     16
                        MONGOC_ERROR_QUERY_FAILURE,     17
                         MONGOC_ERROR_BSON_INVALID,     18
                      MONGOC_ERROR_MATCHER_INVALID,     19
                    MONGOC_ERROR_NAMESPACE_INVALID,     20
        MONGOC_ERROR_NAMESPACE_INVALID_FILTER_TYPE,     21
                  MONGOC_ERROR_COMMAND_INVALID_ARG,     22
             MONGOC_ERROR_COLLECTION_INSERT_FAILED,     23
             MONGOC_ERROR_COLLECTION_UPDATE_FAILED,     24
             MONGOC_ERROR_COLLECTION_DELETE_FAILED,     25
            MONGOC_ERROR_COLLECTION_DOES_NOT_EXIST,     26
              MONGOC_ERROR_GRIDFS_INVALID_FILENAME,     27
                       MONGOC_ERROR_SCRAM_NOT_DONE,     28
                 MONGOC_ERROR_SCRAM_PROTOCOL_ERROR,     29
              MONGOC_ERROR_QUERY_COMMAND_NOT_FOUND,     59
                   MONGOC_ERROR_QUERY_NOT_TAILABLE,  13051
      NGOC_ERROR_SERVER_SELECTION_BAD_WIRE_VERSION,  13052
             MONGOC_ERROR_SERVER_SELECTION_FAILURE,  13053
          MONGOC_ERROR_SERVER_SELECTION_INVALID_ID,  13054
                 MONGOC_ERROR_GRIDFS_CHUNK_MISSING,  13055
                MONGOC_ERROR_GRIDFS_PROTOCOL_ERROR,  13056
                       MONGOC_ERROR_PROTOCOL_ERROR,     17
                  MONGOC_ERROR_WRITE_CONCERN_ERROR,     64
                        MONGOC_ERROR_DUPLICATE_KEY,  11000
                  MONGOC_ERROR_MAX_TIME_MS_EXPIRED,     50
        MONGOC_ERROR_CHANGE_STREAM_NO_RESUME_TOKEN,     51
               MONGOC_ERROR_CLIENT_SESSION_FAILURE,     52
            MONGOC_ERROR_TRANSACTION_INVALID_STATE,     53
                       MONGOC_ERROR_GRIDFS_CORRUPT,     54
         MONGOC_ERROR_GRIDFS_BUCKET_FILE_NOT_FOUND,     55
                 MONGOC_ERROR_GRIDFS_BUCKET_STREAM,     56
      MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_STATE,     57
        MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG,     58
                   BSON_JSON_ERROR_READ_CORRUPT_JS,      1
                BSON_JSON_ERROR_READ_INVALID_PARAM,      2
                   BSON_JSON_ERROR_READ_CB_FAILURE,      3
                           BSON_ERROR_READER_BADFD,      1
                                BSON_VALIDATE_NONE,      0
                                BSON_VALIDATE_UTF8,      1
                         BSON_VALIDATE_DOLLAR_KEYS,      2
                            BSON_VALIDATE_DOT_KEYS,      4
                     BSON_VALIDATE_UTF8_ALLOW_NULL,      8
                          BSON_VALIDATE_EMPTY_KEYS,     16 

      Some overlapping domains have overlapping codes.

      For example, the domains BSON_ERROR_READER = MONGOC_ERROR_STREAM share the code BSON_ERROR_READER_BADFD = MONGOC_ERROR_STREAM_INVALID_TYPE.

      I am not sure if there if there are functions that could return overlapping errors (assuming error API V2 is used), but this certainly makes error handling more difficult for users.

            Assignee:
            Unassigned
            Reporter:
            Kevin Albertson
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: