summaryrefslogtreecommitdiff
path: root/src/mongo/util/assert_util.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/util/assert_util.h')
-rw-r--r--src/mongo/util/assert_util.h35
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!")