diff options
Diffstat (limited to 'src/mongo/util/assert_util.h')
| -rw-r--r-- | src/mongo/util/assert_util.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/mongo/util/assert_util.h b/src/mongo/util/assert_util.h index 4a9e7479443..d423fa3454f 100644 --- a/src/mongo/util/assert_util.h +++ b/src/mongo/util/assert_util.h @@ -150,6 +150,19 @@ public: }; /** + * Use `throwTransactionTooLargeForCache()` instead of throwing + * `TransactionTooLargeForCache` directly. + */ +class TransactionTooLargeForCacheException final : public DBException { +public: + TransactionTooLargeForCacheException(const Status& status) : DBException(status) {} + +private: + void defineOnlyInFinalSubclassToPreventSlicing() final {} +}; + + +/** * The base class of all DBExceptions for codes of the given ErrorCategory to allow catching by * category. */ @@ -165,6 +178,8 @@ protected: } }; +class WriteConflictException; +class TemporarilyUnavailableException; /** * This namespace contains implementation details for our error handling code and should not be used @@ -203,6 +218,21 @@ struct ExceptionForDispatcher<code, CategoryList<categories...>> { ExceptionForImpl<code, ExceptionForCat<categories>...>>; }; +template <> +struct ExceptionForDispatcher<ErrorCodes::WriteConflict> { + using type = WriteConflictException; +}; + +template <> +struct ExceptionForDispatcher<ErrorCodes::TemporarilyUnavailable> { + using type = TemporarilyUnavailableException; +}; + +template <> +struct ExceptionForDispatcher<ErrorCodes::TransactionTooLargeForCache> { + using type = TransactionTooLargeForCacheException; +}; + } // namespace error_details @@ -670,3 +700,8 @@ Status exceptionToStatus() noexcept; * Like `MONGO_UNREACHABLE`, but triggers a `tassert` instead of an `invariant` */ #define MONGO_UNREACHABLE_TASSERT(msgid) tasserted(msgid, "Hit a MONGO_UNREACHABLE_TASSERT!") + +/** + * Like `MONGO_UNIMPLEMENTED`, but triggers a `tassert` instead of an `invariant` + */ +#define MONGO_UNIMPLEMENTED_TASSERT(msgid) tasserted(msgid, "Hit a MONGO_UNIMPLEMENTED_TASSERT!") |
