-
Type: Task
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Sharding
-
Fully Compatible
-
v5.0
-
Sharding 2021-07-12, Sharding 2021-07-26, Sharding 2021-08-09
-
2
Insert a no-op entry with
{_id: { clusterTime: <latest oplog timestamp from donor's cursor response>, ts: <latest oplog timestamp from donor's cursor response>, }}
into the oplog buffer collection on the recipient shard. The <latest oplog timestamp from donor's cursor response> refers to the getLatestOplogTimestamp() value exposed in aggregation cursor command responses on oplog from SERVER-49895.
The no-op entry should be inserted using its own storage transactions and its Collection::insertDocument() call must be allowed to fail with a duplicate key error. This is because it is possible for the donor shard to not have generated any more oplog entries since the last getMore the recipient shard sent and therefore for the same getLatestOplogTimestamp() to be returned.
- causes
-
SERVER-59811 ReshardingOplogFetcher can see the postBatchResumeToken move backwards in time when switching sync sources, stalling the resharding operation
- Closed
-
SERVER-60774 Resharding may apply through reshardFinalOp without transitioning to strict consistency, stalling write operations on collection being resharded until critical section times out
- Closed
- depends on
-
SERVER-49895 Expose getLatestOplogTimestamp() in aggregation cursor command responses on oplog
- Closed
-
SERVER-53534 Support including postBatchResumeToken in cursor response for non-change streams aggregations
- Closed
-
SERVER-49893 Create oplog fetcher for resharding
- Closed
- is depended on by
-
SERVER-58938 Update DBClientCursor::_postBatchResumeToken when running an aggregate command and pass it to the callback function in RSLocalClient::runAggregation
- Closed
- related to
-
SERVER-51246 Write a noop into the oplog buffer after each batch to ensure tenant applier reaches stop timestamp
- Closed