| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
OpObserver onBatchedWrite*() handlers
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
CollectionCatalog::LifetimeMode has been removed. Catalog writes now
require that we are in an active WUOW.
Make it allowed to use WriteUnitOfWork when the server is in readOnly
mode. It does not open storage sessions, just allows registration of
RecoveryUnit callbacks that are executed when calling commit(). This
allows for the unification of code where we need to initialize Collection
instances even in readOnly mode.
Handling of enforcing readOnly has been pushed down to the RecordStore.
All interfaces that perform write now check if we are in readOnly mode
and throw if we are.
Catalog updates using the BatchedCollectionCatalogWriter class bypass
the Collection cloning if the batched CollectionCatalog instance already
has a uniquely owned copy (a previous write to this collection has been
requested). It is also not required to be in an active WUOW when the
BatchedCollectionCatalogWriter is used.
|
| |
|
|
|
|
|
|
| |
- Remove several legacy logger/ files
- Convert all MONGO_LOG_DEFAULT_COMPONENT to the LOGV2 version.
- Globally replace logger::{LogSeverity,LogComponent} => logv2::
|
| |
|
|
|
|
|
|
|
| |
oplogTruncateAfterPoint when primary because there are no oplog holes (no parallel writes).
SERVER-46527 StorageInterfaceImpl::getLatestOplogTimestamp must have implementation logic supported
by all storage engines, not just WiredTiger.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
iterate docs
|
|
|
|
|
|
|
|
|
|
|
| |
- Don't use MONGO_INITIALIZER to declare each fail point.
We only need one init task in total: freeze and iterate the registry.
- remove MONGO_FAIL_POINT_DECLARE macro (extern)
- remove MONGO_FAIL_POINT_SHOULD_FAIL macro (FailPoint::shouldFail)
- remove MONGO_FAIL_POINT_BLOCK_IF (FailPoint::executeIf)
- remove MONGO_FAIL_POINT_BLOCK (FailPoint::execute)
- clean up FailPointRegistry and fail_point_service implementation.
|
|
|
|
|
|
| |
Remove leading comments that are just stating the filename.
Move any file-level comments below the copyright banner.
Remove leading blank lines.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
WiredTiger guards against transactions preparing with a timestamp
earlier than the most recent reader. This guarantees no reader may
have seen the wrong version of a document.
The oplog is a special case. Because the oplog does not contain
prepared updates, and oplog readers cannot read from other
collections, it's valid to prepare behind an oplog readers
timestamp.
However, WiredTiger is not aware the oplog is special. When MongoDB
uses WiredTiger `read_timestamp`s to enforce oplog visibility, there
are cases (specifically, secondary oplog application) where an oplog
reader can be in front of an impending prepare.
There were two strategies available for resolving this. The first is
to artificially hold back what oplog is available to read at until
nothing can be prepared behind an oplog reader. The second strategy,
which is what this patch does, is to have the MongoDB layer hide
documents that are newer than the visibility point. The mechanism for
calculating and discovering the visibility point is unchanged.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Add prepare method to
WriteUnitOfWork. Implement prepareUnitOfWork in WiredTigerRecoveryUnit.
|
|
|