| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Two concurrent storage transactions can now create collections with the same
collection name. These transactions will conflict at commit time; the first
committer will win and register their collection into the global catalog. The
losing transactions will bubble a WriteConflictException.
Top-level callers that should fail if the collection already existed must now
check and fail with a NamespaceExists error code. Previously, those callers
could rely on lower level code returning the NamespaceExists error.
Callers that were implicitly creating a collection may retry the operation,
using the now-registered collection.
These transaction-local collections (UncommittedCollections) are returned when
doing any CollectionCatalog::lookup* call.
|
|
|
|
| |
inserts in dbtest repl
|
|
|
|
| |
Also clean up unused function in repltests.cpp.
|
| |
|
|
|
|
| |
OplogApplierImpl
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Segregate old-style dbtests into their own Suite initialization
system: OldStyleSuiteSpecification. This is where the funky
deprecated features can live on without interfering with the
Suite API. It also gives us a searchable base class to identify
them in the future.
OldStyleSuite has `setupTests()` and an `add<T>()` that
Suite does not have. Suite API can shrink when it doesn't
have to support these dbtest adaptor features.
Suite only needs non-template `add(name, callback)`.
- Add OldStyleSuiteInitializer to some dbtests that were missing it!
These didn't use SuiteInstance to register themselves and were
incorrect. They would self register, resulting in _allSuites()
holding a std::shared_ptr to a static-duration Suite object!
- Change `getSuite()` to return `Suite&` instead of `Suite*`.
- No more "self-registering" in Suite constructor. Registration
must be done as a separate post-construction step. This removes
some unusual lifetime management code and is easier to document.
Suite::getSuite(name) is the only way to make a Suite, and it
does the make_shared and registration calls with a pseudo-private
ConstructorEnable idiom.
- Suite->run() returns std::unique_ptr<Result> instead of
raw `Result*`. It's virtual to support OldStyleSuite behavior.
- Suite._ran does nothing. Removed.
- Result.cur does nothing. Removed.
- Switch to pass-by-value and std::move for most ctor args.
- Add explicit on 1-arg ctors.
- Get rid of TestHolder. It's just a 2-field struct.
- use fmt instead of snprintf
- TEST and TEST_F macros: generate TEST_TYPE once.
- TEST and TEST_F macros: inline the _agent variable.
- Mark _doRun as `override`.
- Terminology: replace CASE_NAME with SUITE_NAME.
- rename DeathTestImpl -> DeathTestBase
- move getDeathTestPattern into the test as a static member function
- refactor out some repetition from the comparator decl macros
- use if-constexpr and diamond relops to clean up the
ComparisonAssertion class.
- dbtests: conditionally skip some add<T> calls
- further dedup (DEATH_)TEST(_F) macros
|
| |
|
|
|
|
| |
CollectionCatalog::get().lookupCollectionByNamespace()
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Remove leading comments that are just stating the filename.
Move any file-level comments below the copyright banner.
Remove leading blank lines.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Implement a new subclass of OpObserverImpl to handle the sharding logic.
Can hopefully be a pure subclass of just OpObserver when OpTimes can be passed into observers.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
and StorageInterface at construction
|
| |
|
|
|
|
|
|
| |
TransactionReaper remove entries
Secondary replication of config.transactions table is now changed to create oplog entries of the actual updates to mirror what the primary would have done.
|
|
|
|
|
| |
This brings the ownership contract between SyncTail and the writer thread
pool closer to that between repl::multiApply() and its ThreadPool argument.
|
| |
|
|
|
|
|
|
| |
decoration through service context (global if needed).
This reverts commit a8fddd07a740e959646995ef93139887b3b3eb5c.
|
|
|
|
|
|
| |
getting decoration through service context (global if needed)."
This reverts commit 7d37a75df3f6035a7afcb51123b88f0e99308fc8.
|
|
|
|
| |
decoration through service context (global if needed).
|
| |
|
| |
|
|
|
|
| |
fetchAndInsertMissingDoc() to accept OplogEntry instead of BSONObj
|
|
|
|
|
|
|
|
| |
tear down.
Closes #1193
Signed-off-by: Benety Goh <benety@mongodb.com>
|
|
|
|
|
|
|
| |
These timestamps are now used to implement oplog visibility rules, in place of the current
in-memory vector of uncommitted ops that the WiredTiger glue code currently uses.
This change also introduces a TimestampedBSONObj class, which encapsulates a BSONObject with its
associated write timestamp.
|
|
|
|
|
|
|
|
|
| |
The $pushAll modifier was deprecated and is now unsupported. Clients
should switch to the $push modifier with $each to get $pushAll
behavior.
This patch also updates some copyright notices that should have been
updated as part of file renames in bf99c6.
|
|
|
|
| |
and document keys
|
| |
|
|
|
|
| |
sync
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There are numerous places in the codebase where `mongo::Status` or
`mongo::StatusWith< T >` objects are returned and never checked.
Many of these are innocuous, but many of them are potentially
severe bugs. This change introduces facilities to permit
compile-time warning of unchecked `Status` and `StatusWith` usage
on clang compilers. It introduces an `ignore` function which is
useful to state that a specific "ignored status" case was
intentional. It not presently an error, in clang builds, to
forget to check a `Status` -- this will come in a later commit.
This also introduces a `transitional_ignore` function, which allows
for easy continual auditing of the codebase for current "whitelisted"
unchecked-status instances. All present "ignored status" cases
have been marked `transitional_ignore`.
|
| |
|