[SERVER-46870] Generalize the WiredTigerRecordStore::OplogStones and move it out of WiredTigerRecordStore Created: 13/Mar/20  Updated: 29/Oct/23  Resolved: 24/Feb/23

Status: Closed
Project: Core Server
Component/s: Storage
Affects Version/s: None
Fix Version/s: 7.0.0-rc0

Type: Improvement Priority: Major - P3
Reporter: Dianna Hohensee (Inactive) Assignee: Jordi Olivares Provencio
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
depends on SERVER-45847 Pull the JournalFlusher out of the st... Closed
depends on SERVER-46869 Make the OplogCapMaintainerThread int... Backlog
is depended on by SERVER-74098 Create CollectionTruncateMarkers impl... Closed
is depended on by SERVER-74099 Create CollectionTruncateMarkers impl... Closed
is depended on by SERVER-74201 Rename OplogStones to OplogMarkers Closed
Problem/Incident
causes SERVER-75107 Deadlock with oplog application and o... Closed
causes SERVER-74250 Rename slowOplogSamplingReads to slow... Backlog
Assigned Teams:
Storage Execution
Backwards Compatibility: Fully Compatible
Sprint: Execution Team 2023-02-20, Execution Team 2023-03-06
Participants:
Linked BF Score: 20

 Description   

After SERVER-45847 and SERVER-46869, we should be able to do this. The interface for WiredTigerRecordStore::OplogStones is already segregated into wiredtiger_record_store_oplog_stones.h.

WiredTigerRecordStore::OplogStones holds a private WiredTigerRecordStore* for the oplog collection, but I think this should be able to be refactored out, switching it with accessing the record store via the oplog collection object, the usual way logic above the storage engine does.

Extricating the _oplogStones object from the rest of the WiredTigerRecordStore, with special behavior in nooks and crannies, will be the tricky and uncertain part for this task.



 Comments   
Comment by Githook User [ 24/Feb/23 ]

Author:

{'name': 'Jordi Olivares Provencio', 'email': 'jordi.olivares-provencio@mongodb.com', 'username': 'jordiolivares'}

Message: SERVER-46870 Generalize OplogStones into a reusable generic class
Branch: master
https://github.com/mongodb/mongo/commit/2a1664eb160c80e8a4665a28fb204e18a7377a77

Comment by Dianna Hohensee (Inactive) [ 30/Mar/20 ]

I think with SERVER-46869, yieldAndAwaitOplogDeletionRequest no longer needs the isDead() check – nor the _isDead boolean – because the OplogCapMaintainerThread that calls the function will be stopped before the oplog record store is ever destroyed for shutdown or catalog restart (rollback).

I put a TODO for this ticket in the code.

Generated at Thu Feb 08 05:12:40 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.