Uploaded image for project: 'WiredTiger'
  1. WiredTiger
  2. WT-4174

Do not access the lookaside file in rollback_to_stable when running with in_memory=true

    • Type: Icon: Task Task
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 3.6.9, 4.0.2, 4.1.2, WT3.2.0
    • Affects Version/s: None
    • Component/s: None
    • Labels:
      None
    • Storage Non-NYC 2018-07-16

      WT appears to be accessing the lookaside file while in_memory=true. It should probably discriminate modes and skip that step when in_memory is true. Hopefully a simple fix. MongoDB never exercised recoverable rollback with inMemory before, I believe.

      Here's the backtrace from my local testing trying to enable recoverable rollback with the inMemory engine:

      /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:276:5: mongo::(anonymous namespace)::abruptQuitWithAddrSignal(int, siginfo_t*, void*)
       ??:0:0: ??
       /home/dianna/mongo-copy/src/third_party/wiredtiger/src/cache/cache_las.c:300:10: __wt_las_cursor
       /home/dianna/mongo-copy/src/third_party/wiredtiger/src/txn/txn_rollback_to_stable.c:46:2: __txn_rollback_to_stable_lookaside_fixup
       /home/dianna/mongo-copy/src/third_party/wiredtiger/src/txn/txn_rollback_to_stable.c:469:2: __wt_txn_rollback_to_stable
       /home/dianna/mongo-copy/src/third_party/wiredtiger/src/conn/conn_api.c:1295:2: __conn_rollback_to_stable
       /home/dianna/mongo-copy/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp:1329:15: mongo::WiredTigerKVEngine::recoverToStableTimestamp(mongo::OperationContext*)
       /home/dianna/mongo-copy/src/mongo/db/storage/kv/kv_storage_engine.cpp:548:50: mongo::KVStorageEngine::recoverToStableTimestamp(mongo::OperationContext*)
       /home/dianna/mongo-copy/src/mongo/db/repl/storage_interface_impl.cpp:1058:60: mongo::repl::StorageInterfaceImpl::recoverToStableTimestamp(mongo::OperationContext*)
       /home/dianna/mongo-copy/src/mongo/db/repl/rollback_impl.cpp:853:57: mongo::repl::RollbackImpl::_recoverToStableTimestamp(mongo::OperationContext*)
       /home/dianna/mongo-copy/src/mongo/db/repl/rollback_impl.cpp:209:30: mongo::repl::RollbackImpl::runRollback(mongo::OperationContext*)
       /home/dianna/mongo-copy/src/mongo/db/repl/bgsync.cpp:659:30: mongo::repl::BackgroundSync::_runRollbackViaRecoverToCheckpoint(mongo::OperationContext*, mongo::HostAndPort const&, mongo::repl::OplogInterface*, mongo::repl::StorageInterface*, std::function<mongo::DBClientBase* ()>)
       /home/dianna/mongo-copy/src/mongo/db/repl/bgsync.cpp:624:9: mongo::repl::BackgroundSync::_runRollback(mongo::OperationContext*, mongo::Status const&, mongo::HostAndPort const&, int, mongo::repl::StorageInterface*)
       /home/dianna/mongo-copy/src/mongo/db/repl/bgsync.cpp:490:9: mongo::repl::BackgroundSync::_produce()
       /home/dianna/mongo-copy/src/mongo/db/repl/bgsync.cpp:238:5: mongo::repl::BackgroundSync::_runProducer()
       /home/dianna/mongo-copy/src/mongo/db/repl/bgsync.cpp:199:13: mongo::repl::BackgroundSync::_run()
       /home/dianna/mongo-copy/src/mongo/db/repl/bgsync.cpp:157:53: mongo::repl::BackgroundSync::startup(mongo::OperationContext*)::$_2::operator()() const
       /opt/mongodbtoolchain/v2/bin/../lib/gcc/x86_64-mongodb-linux/5.4.0/../../../../include/c++/5.4.0/functional:1530:18: void std::_Bind_simple<mongo::repl::BackgroundSync::startup(mongo::OperationContext*)::$_2 ()>::_M_invoke<>(std::_Index_tuple<>)
       /opt/mongodbtoolchain/v2/bin/../lib/gcc/x86_64-mongodb-linux/5.4.0/../../../../include/c++/5.4.0/functional:1520:16: std::_Bind_simple<mongo::repl::BackgroundSync::startup(mongo::OperationContext*)::$_2 ()>::operator()()
       /opt/mongodbtoolchain/v2/bin/../lib/gcc/x86_64-mongodb-linux/5.4.0/../../../../include/c++/5.4.0/thread:115:13: std::thread::_Impl<std::_Bind_simple<mongo::repl::BackgroundSync::startup(mongo::OperationContext*)::$_2 ()> >::_M_run()
       /data/mci/26b9e5d7c61766d896483614d1d3f40a/toolchain-builder/build-gcc-v2.sh-coB/x86_64-mongodb-linux/libstdc++-v3/src/c++11/../../../../../gcc-5.4.0/libstdc++-v3/src/c++11/thread.cc:84:0: execute_native_thread_routine
       /build/buildd/glibc-2.21/nptl/pthread_create.c:333:0: start_thread
       /build/buildd/glibc-2.21/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:109:0: clone
      

            Assignee:
            sue.loverso@mongodb.com Susan LoVerso
            Reporter:
            dianna.hohensee@mongodb.com Dianna Hohensee (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: