-
Type: Task
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Cluster Scalability
-
Fully Compatible
-
Cluster Scalability 2024-11-11
-
200
Currently, the ReshardingOplogFetcher performs only one insert in each storage transaction (i.e. insert the oplog entries separately). We should perform multiple inserts in each storage transaction (using WriteUnitOfWork::kGroupForTransaction). This optimization is required by SERVER-94800, since it will introduce a doc for tracking the count of oplog entries fetched so that the ReshardingRecipientService can use it to recover the resharding metrics after failover/shutdown instead of using the fast count like we do today. To do that, every time the ReshardingOplogFetcher inserts oplog entries into the oplog buffer collection, it needs to atomically update the count in this doc in the fetcher progress collection. Doing this optimization will enable us to avoid doubling the number of writes. Let N be the number of oplog entries and B > 1 be the batch size, then we would do (N + N/B) writes instead of 2N writes.
- is depended on by
-
SERVER-94800 Unclean shutdown during resharding can lead to incorrect "oplogEntriesFetched" metric and ReshardingCriticalSectionTimeout error
- Closed
- related to
-
SERVER-96804 Investigate why there can be oplog entries past the resharding "blocking-writes" noop oplog entry
- Closed
-
SERVER-96817 Reduce copies inside resharding_oplog_fetcher.cpp
- Closed