[SERVER-45184] "reopened transaction" invariant in TLA+ trace logging with inMemory storage engine Created: 16/Dec/19  Updated: 29/Oct/23  Resolved: 17/Dec/19

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

Type: Bug Priority: Major - P3
Reporter: A. Jesse Jiryu Davis Assignee: A. Jesse Jiryu Davis
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
Backwards Compatibility: Fully Compatible
Operating System: ALL
Sprint: Repl 2019-12-30
Participants:
Linked BF Score: 48

 Description   

mongod crashes if TLA+ trace logging is enabled with the inMemory storage engine:

 
I  INDEX    [monitoring-keys-for-HMAC] index build: done building index _id_ on ns admin.system.keys
D2 TLA_PLUS [monitoring-keys-for-HMAC] Getting global lock in IS mode to log AdvanceCommitPoint for RaftMongo.tla
D2 TLA_PLUS [monitoring-keys-for-HMAC] Going to log AdvanceCommitPoint as Leader for RaftMongo.tla, reading oplog with timestamp (nothing)
 



 Comments   
Comment by Githook User [ 29/Jan/20 ]

Author:

{'username': 'ajdavis', 'name': 'A. Jesse Jiryu Davis', 'email': 'jesse@mongodb.com'}

Message: SERVER-45558 Revert logging additions for TLA+ Trace Checker project

This is a combination of 6 commits.

Revert "SERVER-44458 Add RaftMongo.tla spec"

This reverts commit 88aaa47b815507e3ddd9a3a79f00d0eaca3ae071.

Revert "SERVER-45184 Ban TLA+ tracing with inMemory"

This reverts commit e57438bd024d04f82dcbcbe68fe223b3f3aec838.

Revert "SERVER-43589 Trace logging for RaftMongo.tla"

This reverts commit f515d2ad5494e64c3be80189e7ea6bceaf267421.

Revert "SERVER-44076 create TLA+ Trace Checking logging framework"

This reverts commit 744200de5f5667334457ee35abfa3747e2e26d55.

Revert "SERVER-43589 Failpoint to log TLA+ trace events"

This reverts commit eda99cf7ca668908e5eb0498845b0270265c44e7.

Revert "SERVER-45106 Add TLA+ log component to logv2"

This reverts commit a60ce00707f0ffdb5d2ec5c3a72993cc2b2d2978.

delete mode 100644 jstests/replsets/tla_plus_trace_checking.js
delete mode 100644 src/mongo/db/repl/replication_coordinator_impl_tla_plus_trace.cpp
delete mode 100644 src/mongo/db/repl/tla_plus_trace_repl.idl
delete mode 100644 src/mongo/util/tla_plus_trace.cpp
delete mode 100644 src/mongo/util/tla_plus_trace.h
delete mode 100644 src/mongo/util/tla_plus_trace.idl
Branch: master
https://github.com/mongodb/mongo/commit/bcae9e6777408882b3d391721dea262c1cdcd16e

Comment by Githook User [ 17/Dec/19 ]

Author:

{'name': 'A. Jesse Jiryu Davis', 'email': 'jesse@mongodb.com', 'username': 'ajdavis'}

Message: SERVER-45184 Ban TLA+ tracing with inMemory
Branch: master
https://github.com/mongodb/mongo/commit/e57438bd024d04f82dcbcbe68fe223b3f3aec838

Comment by A. Jesse Jiryu Davis [ 16/Dec/19 ]

We log TLA+ state information, including the contents of the oplog, whenever the commit point advances. This normally happens in the journal listener thread, outside any write unit of work.

But if writeConcernMajorityJournalDefault is false, as with the inMemory storage engine, then ReplicationCoordinatorImpl::_setMyLastAppliedOpTimeAndWallTime directly advances the commit point while in a WUOW with state "kCommitting". mongod can't read the contents of the oplog in a committing WUOW, so it dies of an invariant.

Let's tag the TLA+ trace logging test appropriately to required persistent WiredTiger with journaling.

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