[SERVER-36023] Try to enable replica set transaction testing with the inMemory WT storage engine Created: 09/Jul/18  Updated: 06/Nov/18  Resolved: 06/Nov/18

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

Type: Task Priority: Major - P3
Reporter: Dianna Hohensee (Inactive) Assignee: Dianna Hohensee (Inactive)
Resolution: Done Votes: 0
Labels: nyc
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
depends on SERVER-35811 Pin stable timestamp behind the oldes... Closed
Gantt Dependency
has to be done after SERVER-35798 Writing an oplog entry for prepare sh... Closed
Related
related to SERVER-35513 Forbid transactions on inMemory stora... Closed
related to SERVER-36072 Remove enableInMemoryTransactions ser... Closed
is related to SERVER-36782 WT erring because commit timestamp is... Closed
is related to SERVER-37943 Enable replica set transactions for t... Closed
Sprint: Storage NYC 2018-07-30, Storage NYC 2018-08-13, Storage NYC 2018-11-19
Participants:

 Description   

This task is to turn on the testing and see what happens. If everything works successfully, commit it. Otherwise, create replication and/or storage work accordingly.

The testing stopped in SERVER-35513 should be re-enabled, as well as checking for any new transaction testing added since inMemory testing ceased.



 Comments   
Comment by Dianna Hohensee (Inactive) [ 06/Nov/18 ]

Closing this ticket, unable to enable replica set transactions with the inMemory WT storage engine. Created SERVER-37943 to enable it, as opposed to try.

Comment by Dianna Hohensee (Inactive) [ 20/Aug/18 ]

Linking SERVER-35811 as a dependency, because inMemory is much more likely to hit the problem – it's been 100% locally reproducible via

python buildscripts/resmoke.py --suites=causally_consistent_jscore_txns_passthrough --storageEngine=inMemory jstests/core/txns/prepare_requires_fcv42.js --basePort 28001 --repeat=1

Failing like so

[ReplicaSetFixture:job0:primary] 2018-08-20T14:42:07.208-0400 E STORAGE  [conn13] WiredTiger error (22) [1534790527:208265][1346:0x7fe7391de700], WT_SESSION.timestamp_transaction: __wt_timestamp_validate, 631: commit timestamp 5B7B0B7F00000001 older than stable timestamp 5b7b0b7f00000002: Invalid argument Raw: [1534790527:208265][1346:0x7fe7391de700], WT_SESSION.timestamp_transaction: __wt_timestamp_validate, 631: commit timestamp 5B7B0B7F00000001 older than stable timestamp 5b7b0b7f00000002: Invalid argument
[ReplicaSetFixture:job0:primary] 2018-08-20T14:42:07.208-0400 F -        [conn13] Invariant failure: s->timestamp_transaction(s, conf.c_str()) resulted in status BadValue: 22: Invalid argument at src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp 256
[ReplicaSetFixture:job0:primary] 2018-08-20T14:42:07.208-0400 F -        [conn13]
[ReplicaSetFixture:job0:primary]
[ReplicaSetFixture:job0:primary] ***aborting after invariant() failure

cleaning up the backtrace to this

 /home/dianna/mongo-copy/src/mongo/util/stacktrace_posix.cpp:172:30: mongo::printStackTrace(std::ostream&)
 /home/dianna/mongo-copy/src/mongo/util/signal_handlers_synchronous.cpp:180:5: mongo::(anonymous namespace)::printSignalAndBacktrace(int)
 /home/dianna/mongo-copy/src/mongo/util/signal_handlers_synchronous.cpp:237:5: mongo::(anonymous namespace)::abruptQuit(int)
 ??:0:0: ??
 /build/glibc-qbmteM/glibc-2.21/signal/../sysdeps/unix/sysv/linux/raise.c:55:0: gsignal
 /build/glibc-qbmteM/glibc-2.21/stdlib/abort.c:89:0: abort
 /home/dianna/mongo-copy/src/mongo/util/assert_util.cpp:126:5: mongo::invariantOKFailed(char const*, mongo::Status const&, char const*, unsigned int)
 /home/dianna/mongo/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp:256:13: mongo::WiredTigerRecoveryUnit::_txnClose(bool)
 /home/dianna/mongo/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp:89:13: mongo::WiredTigerRecoveryUnit::_commit()
 /home/dianna/mongo/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp:165:5: mongo::WiredTigerRecoveryUnit::commitUnitOfWork()
 /home/dianna/mongo-copy/src/mongo/db/storage/write_unit_of_work.cpp:96:33: mongo::WriteUnitOfWork::commit()
 /home/dianna/mongo-copy/src/mongo/db/transaction_participant.cpp:693:34: mongo::TransactionParticipant::_commitTransaction(std::unique_lock<std::mutex>, mongo::OperationContext*)
 /home/dianna/mongo-copy/src/mongo/db/transaction_participant.cpp:681:5: mongo::TransactionParticipant::commitPreparedTransaction(mongo::OperationContext*, mongo::Timestamp)
 /home/dianna/mongo-copy/src/mongo/db/commands/txn_cmds.cpp:101:29: mongo::(anonymous namespace)::CmdCommitTxn::run(mongo::OperationContext*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, mongo::BSONObj const&, mongo::BSONObjBuilder&)
 /home/dianna/mongo/src/mongo/db/commands.cpp:436:29: mongo::BasicCommand::Invocation::run(mongo::OperationContext*, mongo::rpc::ReplyBuilderInterface*)
 /home/dianna/mongo-copy/src/mongo/db/service_entry_point_common.cpp:459:17: mongo::(anonymous namespace)::invokeInTransaction(mongo::OperationContext*, mongo::CommandInvocation*, mongo::rpc::ReplyBuilderInterface*)
 /home/dianna/mongo-copy/src/mongo/db/service_entry_point_common.cpp:526:13: mongo::(anonymous namespace)::runCommandImpl(mongo::OperationContext*, mongo::CommandInvocation*, mongo::OpMsgRequest const&, mongo::rpc::ReplyBuilderInterface*, mongo::LogicalTime, mongo::ServiceEntryPointCommon::Hooks const&, mongo::BSONObjBuilder*, boost::optional<mongo::OperationSessionInfoFromClient> const&)
 /home/dianna/mongo-copy/src/mongo/db/service_entry_point_common.cpp:873:18: mongo::(anonymous namespace)::execCommandDatabase(mongo::OperationContext*, mongo::Command*, mongo::OpMsgRequest const&, mongo::rpc::ReplyBuilderInterface*, mongo::ServiceEntryPointCommon::Hooks const&)
 /home/dianna/mongo-copy/src/mongo/db/service_entry_point_common.cpp:1021:13: mongo::(anonymous namespace)::receivedCommands(mongo::OperationContext*, mongo::Message const&, mongo::ServiceEntryPointCommon::Hooks const&)::$_6::operator()() const
 /home/dianna/mongo-copy/src/mongo/db/service_entry_point_common.cpp:969:5: mongo::(anonymous namespace)::receivedCommands(mongo::OperationContext*, mongo::Message const&, mongo::ServiceEntryPointCommon::Hooks const&)
 /home/dianna/mongo-copy/src/mongo/db/service_entry_point_common.cpp:1310:22: mongo::ServiceEntryPointCommon::handleRequest(mongo::OperationContext/**
*, mongo::Message const&, mongo::ServiceEntryPointCommon::Hooks const&)
 /home/dianna/mongo/src/mongo/db/service_entry_point_mongod.cpp:123:12: mongo::ServiceEntryPointMongod::handleRequest(mongo::OperationContext*, mongo::Message const&)
 /home/dianna/mongo-copy/src/mongo/transport/service_state_machine.cpp:379:35: mongo::ServiceStateMachine::_processMessage(mongo::ServiceStateMachine::ThreadGuard)
 /home/dianna/mongo-copy/src/mongo/transport/service_state_machine.cpp:440:17: mongo::ServiceStateMachine::_runNextInGuard(mongo::ServiceStateMachine::ThreadGuard)
 /home/dianna/mongo-copy/src/mongo/transport/service_state_machine.cpp:480:14: mongo::ServiceStateMachine::_scheduleNextWithGuard(mongo::ServiceStateMachine::ThreadGuard, mongo::transport::ServiceExecutor::ScheduleFlags, mongo::transport::ServiceExecutorTaskName, mongo::ServiceStateMachine::Ownership)::$_0::operator()() const
 /opt/mongodbtoolchain/v2/bin/../lib/gcc/x86_64-mongodb-linux/5.4.0/../../../../include/c++/5.4.0/functional:1871:2: std::_Function_handler<void (), mongo::ServiceStateMachine::_scheduleNextWithGuard(mongo::ServiceStateMachine::ThreadGuard, mongo::transport::ServiceExecutor::ScheduleFlags, mongo::transport::ServiceExecutorTaskName, mongo::ServiceStateMachine::Ownership)::$_0>::_M_invoke(std::_Any_data const&)
 /opt/mongodbtoolchain/v2/bin/../lib/gcc/x86_64-mongodb-linux/5.4.0/../../../../include/c++/5.4.0/functional:2267:14: std::function<void ()>::operator()() const
 /home/dianna/mongo-copy/src/mongo/transport/service_executor_synchronous.cpp:115:13: mongo::transport::ServiceExecutorSynchronous::schedule(std::function<void ()>, mongo::transport::ServiceExecutor::ScheduleFlags, mongo::transport::ServiceExecutorTaskName)
 /home/dianna/mongo-copy/src/mongo/transport/service_state_machine.cpp:484:48: mongo::ServiceStateMachine::_scheduleNextWithGuard(mongo::ServiceStateMachine::ThreadGuard, mongo::transport::ServiceExecutor::ScheduleFlags, mongo::transport::ServiceExecutorTaskName, mongo::ServiceStateMachine::Ownership)
 /home/dianna/mongo-copy/src/mongo/transport/service_state_machine.cpp:303:16: mongo::ServiceStateMachine::_sourceCallback(mongo::Status)
 /home/dianna/mongo-copy/src/mongo/transport/service_state_machine.cpp:259:9: mongo::ServiceStateMachine::_sourceMessage(mongo::ServiceStateMachine::ThreadGuard)::$_2::operator()(mongo::StatusWith<mongo::Message>) const
 /home/dianna/mongo-copy/src/mongo/util/future.h:112:12: auto mongo::future_details::call<mongo::ServiceStateMachine::_sourceMessage(mongo::ServiceStateMachine::ThreadGuard)::$_2&, mongo::Message>(mongo::ServiceStateMachine::_sourceMessage(mongo::ServiceStateMachine::ThreadGuard)::$_2&, mongo::Message&&)
 /home/dianna/mongo-copy/src/mongo/util/future.h:818:28: void mongo::future_details::Future<mongo::Message>::getAsync<mongo::ServiceStateMachine::_sourceMessage(mongo::ServiceStateMachine::ThreadGuard)::$_2>(mongo::ServiceStateMachine::_sourceMessage(mongo::ServiceStateMachine::ThreadGuard)::$_2&&) &&::{lambda(mongo::Message&&)#1}::operator()(mongo::Message&&) const
 /home/dianna/mongo-copy/src/mongo/util/future.h:1122:20: auto mongo::future_details::Future<mongo::Message>::generalImpl<void mongo::future_details::Future<mongo::Message>::getAsync<mongo::ServiceStateMachine::_sourceMessage(mongo::ServiceStateMachine::ThreadGuard)::$_2>(mongo::ServiceStateMachine::_sourceMessage(mongo::ServiceStateMachine::ThreadGuard)::$_2&&) &&::{lambda(mongo::Message&&)#1}, void mongo::future_details::Future<mongo::Message>::getAsync<mongo::ServiceStateMachine::_sourceMessage(mongo::ServiceStateMachine::ThreadGuard)::$_2>(mongo::ServiceStateMachine::_sourceMessage(mongo::ServiceStateMachine::ThreadGuard)::$_2&&) &&::{lambda(mongo::Status&&)#1}, void mongo::future_details::Future<mongo::Message>::getAsync<mongo::ServiceStateMachine::_sourceMessage(mongo::ServiceStateMachine::ThreadGuard)::$_2>(mongo::ServiceStateMachine::_sourceMessage(mongo::ServiceStateMachine::ThreadGuard)::$_2&&) &&::{lambda()#1}>(mongo::ServiceStateMachine::_sourceMessage(mongo::ServiceStateMachine::ThreadGuard)::$_2&&, void mongo::future_details::Future<mongo::Message>::getAsync<mongo::ServiceStateMachine::_sourceMessage(mongo::ServiceStateMachine::ThreadGuard)::$_2>(mongo::ServiceStateMachine::_sourceMessage(mongo::ServiceStateMachine::ThreadGuard)::$_2&&) &&::{lambda(mongo::Status&&)#1}&&, void mongo::future_details::Future<mongo::Message>::getAsync<mongo::ServiceStateMachine::_sourceMessage(mongo::ServiceStateMachine::ThreadGuard)::$_2>(mongo::ServiceStateMachine::_sourceMessage(mongo::ServiceStateMachine::ThreadGuard)::$_2&&) &&::{lambda()#1}&&)
 /home/dianna/mongo-copy/src/mongo/util/future.h:816:16: void mongo::future_details::Future<mongo::Message>::getAsync<mongo::ServiceStateMachine::_sourceMessage(mongo::ServiceStateMachine::ThreadGuard)::$_2>(mongo::ServiceStateMachine::_sourceMessage(mongo::ServiceStateMachine::ThreadGuard)::$_2&&) &&
 /home/dianna/mongo-copy/src/mongo/transport/service_state_machine.cpp:254:21: mongo::ServiceStateMachine::_sourceMessage(mongo::ServiceStateMachine::ThreadGuard)
 /home/dianna/mongo-copy/src/mongo/transport/service_state_machine.cpp:437:17: mongo::ServiceStateMachine::_runNextInGuard(mongo::ServiceStateMachine::ThreadGuard)
 /home/dianna/mongo-copy/src/mongo/transport/service_state_machine.cpp:480:14: mongo::ServiceStateMachine::_scheduleNextWithGuard(mongo::ServiceStateMachine::ThreadGuard, mongo::transport::ServiceExecutor::ScheduleFlags, mongo::transport::ServiceExecutorTaskName, mongo::ServiceStateMachine::Ownership)::$_0::operator()() const
 /opt/mongodbtoolchain/v2/bin/../lib/gcc/x86_64-mongodb-linux/5.4.0/../../../../include/c++/5.4.0/functional:1871:2: std::_Function_handler<void (), mongo::ServiceStateMachine::_scheduleNextWithGuard(mongo::ServiceStateMachine::ThreadGuard, mongo::transport::ServiceExecutor::ScheduleFlags, mongo::transport::ServiceExecutorTaskName, mongo::ServiceStateMachine::Ownership)::$_0>::_M_invoke(std::_Any_data const&)
 /opt/mongodbtoolchain/v2/bin/../lib/gcc/x86_64-mongodb-linux/5.4.0/../../../../include/c++/5.4.0/functional:2267:14: std::function<void ()>::operator()() const
 /home/dianna/mongo-copy/src/mongo/transport/service_executor_synchronous.cpp:132:13: mongo::transport::ServiceExecutorSynchronous::schedule(std::function<void ()>, mongo::transport::ServiceExecutor::ScheduleFlags, mongo::transport::ServiceExecutorTaskName)::$_1::operator()() const
 /opt/mongodbtoolchain/v2/bin/../lib/gcc/x86_64-mongodb-linux/5.4.0/../../../../include/c++/5.4.0/functional:1871:2: std::_Function_handler<void (), mongo::transport::ServiceExecutorSynchronous::schedule(std::function<void ()>, mongo::transport::ServiceExecutor::ScheduleFlags, mongo::transport::ServiceExecutorTaskName)::$_1>::_M_invoke(std::_Any_data const&)
 /opt/mongodbtoolchain/v2/bin/../lib/gcc/x86_64-mongodb-linux/5.4.0/../../../../include/c++/5.4.0/functional:2267:14: std::function<void ()>::operator()() const
 /home/dianna/mongo-copy/src/mongo/transport/service_entry_point_utils.cpp:55:5: mongo::(anonymous namespace)::runFunc(void*)
 /build/glibc-qbmteM/glibc-2.21/nptl/pthread_create.c:333:0: start_thread
 /build/glibc-qbmteM/glibc-2.21/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:109:0: clone
dianna@delphi:~/mongo-copy$ vim jstests/core/txns/prepare_requires_fcv42.js

That failure is present in most of the red in this patch build: https://evergreen.mongodb.com/version/5b7b12a4e3c33131ea7d017f

Comment by Dianna Hohensee (Inactive) [ 20/Jul/18 ]

Linking SERVER-35798 as a dependency, because inMemory is hitting that failure 100% in some tests.

Comment by Dianna Hohensee (Inactive) [ 14/Jul/18 ]

Looks like the replica_sets_multi_stmt_txn_jscore_passthrough suite might need to be added to the inMemory builds. Need to dig around for other txn suites never added to inMemory that should now be considered.

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