diff options
Diffstat (limited to 'src/mongo/db/exec/collection_scan.cpp')
-rw-r--r-- | src/mongo/db/exec/collection_scan.cpp | 35 |
1 files changed, 6 insertions, 29 deletions
diff --git a/src/mongo/db/exec/collection_scan.cpp b/src/mongo/db/exec/collection_scan.cpp index 162caf4cf3e..e2c51ea7304 100644 --- a/src/mongo/db/exec/collection_scan.cpp +++ b/src/mongo/db/exec/collection_scan.cpp @@ -121,12 +121,12 @@ PlanStage::StageState CollectionScan::doWork(WorkingSetID* out) { if (!_lastSeenId.isNull()) { invariant(_params.tailable); - // Seek to where we were last time. If it no longer exists, mark us as dead - // since we want to signal an error rather than silently dropping data from the - // stream. This is related to the _lastSeenId handling in invalidate. Note that - // we want to return the record *after* this one since we have already returned - // this one. This is only possible in the tailing case because that is the only - // time we'd need to create a cursor after already getting a record out of it. + // Seek to where we were last time. If it no longer exists, mark us as dead since we + // want to signal an error rather than silently dropping data from the stream. + // + // Note that we want to return the record *after* this one since we have already + // returned this one. This is only possible in the tailing case because that is the + // only time we'd need to create a cursor after already getting a record out of it. if (!_cursor->seekExact(_lastSeenId)) { _isDead = true; Status status(ErrorCodes::CappedPositionLost, @@ -234,29 +234,6 @@ bool CollectionScan::isEOF() { return _commonStats.isEOF || _isDead; } -void CollectionScan::doInvalidate(OperationContext* opCtx, - const RecordId& id, - InvalidationType type) { - // We don't care about mutations since we apply any filters to the result when we (possibly) - // return it. - if (INVALIDATION_DELETION != type) { - return; - } - - // If we're here, 'id' is being deleted. - - // Deletions can harm the underlying RecordCursor so we must pass them down. - if (_cursor) { - _cursor->invalidate(opCtx, id); - } - - if (_params.tailable && id == _lastSeenId) { - // This means that deletes have caught up to the reader. We want to error in this case - // so readers don't miss potentially important data. - _isDead = true; - } -} - void CollectionScan::doSaveState() { if (_cursor) { _cursor->save(); |