summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mongo/db/concurrency/write_conflict_exception.cpp8
-rw-r--r--src/mongo/db/concurrency/write_conflict_exception.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/src/mongo/db/concurrency/write_conflict_exception.cpp b/src/mongo/db/concurrency/write_conflict_exception.cpp
index 9e4771473c6..ea8ce3c75c9 100644
--- a/src/mongo/db/concurrency/write_conflict_exception.cpp
+++ b/src/mongo/db/concurrency/write_conflict_exception.cpp
@@ -48,6 +48,14 @@ WriteConflictException::WriteConflictException()
}
}
+WriteConflictException::WriteConflictException(StringData context) : WriteConflictException() {
+ // Avoid unnecessary update to embedded Status within DBException.
+ if (context.empty()) {
+ return;
+ }
+ addContext(context);
+}
+
void WriteConflictException::logAndBackoff(int attempt, StringData operation, StringData ns) {
mongo::logAndBackoff(4640401,
::mongo::logv2::LogComponent::kWrite,
diff --git a/src/mongo/db/concurrency/write_conflict_exception.h b/src/mongo/db/concurrency/write_conflict_exception.h
index a82d8f3296d..983411169e3 100644
--- a/src/mongo/db/concurrency/write_conflict_exception.h
+++ b/src/mongo/db/concurrency/write_conflict_exception.h
@@ -48,6 +48,7 @@ extern FailPoint skipWriteConflictRetries;
class WriteConflictException final : public DBException {
public:
WriteConflictException();
+ WriteConflictException(StringData context);
/**
* Will log a message if sensible and will do an exponential backoff to make sure