[SERVER-53247] Disable enableMajorityReadConcern:false Created: 04/Dec/20  Updated: 29/Oct/23  Resolved: 19/Jan/21

Status: Closed
Project: Core Server
Component/s: None
Affects Version/s: None
Fix Version/s: 4.9.0

Type: Task Priority: Major - P3
Reporter: Evin Roesle Assignee: Pavithra Vetriselvan
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
depends on SERVER-53617 ephemeralForTest storage engine does ... Closed
Documented
is documented by DOCS-14135 Investigate changes in SERVER-53247: ... Closed
Related
related to SERVER-54202 Remove startup warning encouraging EM... Closed
related to SERVER-57197 [ephemeralForTest] improve error mess... Closed
related to SERVER-49792 Implement a snapshot manager for ephe... Closed
related to SERVER-53722 Add upgrade/downgrade coverage for EM... Closed
related to SERVER-54074 [v4.0] Log start and end of changes t... Closed
related to SERVER-73351 remove WiredTigerKVEngine::_keepDataH... Closed
Backwards Compatibility: Major Change
Sprint: Repl 2020-12-28, Repl 2021-01-11, Repl 2021-01-25
Participants:

 Description   

WiredTiger recently completed an investigation of the feasibility of removing enableMajorityReadConcern:false now that WT has durable history. After reviewing the findings of that investigation, we are moving forward with Removing Support for enableMajorityReadConcern:false. Durable History addresses cache pressure concerns around majority commit point lag allowing for the removal of eMRC:false (a mode of operation that does not allow distributed transactions and other features).

We need to disable support for eMRC:false as a first step.

In a future release, we will fully remove support for eMRC:false.



 Comments   
Comment by Githook User [ 19/Jan/21 ]

Author:

{'name': 'Pavi Vetriselvan', 'email': 'pavithra.vetriselvan@mongodb.com', 'username': 'pvselvan'}

Message: SERVER-53247 disable enableMajorityReadConcern=false for non-test storage engines
Branch: master
https://github.com/mongodb/mongo/commit/7a1bb02d3a93f72592ceef13eb5b45e74ca1d83e

Comment by Githook User [ 14/Jan/21 ]

Author:

{'name': 'Pavi Vetriselvan', 'email': 'pavithra.vetriselvan@mongodb.com', 'username': 'pvselvan'}

Message: SERVER-53247 Remove EMRC=false targeted jstests/unittests
Branch: master
https://github.com/mongodb/mongo/commit/3a4dda6f0dc7f32e91310b9256cd3b499f7715d2

Comment by Githook User [ 13/Jan/21 ]

Author:

{'name': 'Pavi Vetriselvan', 'email': 'pavithra.vetriselvan@mongodb.com', 'username': 'pvselvan'}

Message: SERVER-53247 remove EMRC=false build variant
Branch: master
https://github.com/mongodb/mongo/commit/75b6529f373626c39aca5b7cfeb0bf8b9d48c42f

Comment by Pavithra Vetriselvan [ 06/Jan/21 ]

geert.bosch I filed SERVER-53616 and SERVER-53617 for the Execution Team since those are prerequisites to actually disallowing EMRC=false. One has to do with supporting snapshots and the other has to do with support for RTT.

I don't think those tickets apply to the inMemory storage engine since it looks like we're already running those variants with EMRC=true.

Comment by Judah Schvimer [ 04/Jan/21 ]

My understanding is that we can completely remove EMRC=F, including removing support for ephemeralForTest and inMemory. I was not aware of anything requiring those storage engines to use EMRC=F, especially after PM-1244. geert.bosch, do ephemeralForTest and inMemory still require supporting EMRC=F?

Comment by Pavithra Vetriselvan [ 04/Jan/21 ]

judah.schvimer lingzhi.deng Just to confirm, we're still expected to support EMRC=false for the ephemeralForTest/inMemory storage engines, right?

The reason I ask is because my current implementation does not remove the "enableMajorityReadConcern" parameter and just errors if the user tries to set it to false. Internally, the global variable defaults to true. Later, if the user did not specify a storage engine, we use the data files to detect one. Since EMRC=true is now the default, we'll always uassert here if we're using a storage engine that requires EMRC=false.

One solution is to record whether emrc=true was set by a user (i.e. the command line parameter is present). If so, and they're trying to use an incompatible storage engine, uassert as normal. If emrc=true because of the default value, change this value to false when using an incompatible storage engine.

Comment by Judah Schvimer [ 07/Dec/20 ]

As part of this ticket we should also remove all testing of eMRC=F on the master branch.

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