Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-15942

Replset write-command API test failures for non-mmap engines

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Minor - P4 Minor - P4
    • None
    • Affects Version/s: 2.7.8
    • Component/s: Testing Infrastructure
    • Storage Execution
    • ALL
    • Hide

      Start mongod with --nojournal and a storage engine whose implementation of isDurable() unconditionally returns true.

      Show
      Start mongod with --nojournal and a storage engine whose implementation of isDurable() unconditionally returns true.

      Some replsets tests check that a

      { j: true }

      write on a server with --nojournal fails. The method to detect whether an engine is journaling is `StorageEngine::isDurable()'

      Some engines are unconditionally durable, so they always return true for isDurable and ignore the --nojournal option. As a result the write command API won't reject writes due to

      { j: 1 }

      because it seems like a valid thing to do (and it is because the engine supports journaling).

      If we want to keep the current semantics, we should check for the '--nojournal' option in the command line params struct instead of asking the storage engine whether or not it is durable. But I think the tests should just be fixed to accept the fact that some engines always enable journaling.

      The tests that fail include:
      jstests/gle/gle_sharded_wc.js
      jstests/replsets/bulk_api_wc.js
      jstests/replsets/batch_write_command_wc.js

            Assignee:
            backlog-server-execution [DO NOT USE] Backlog - Storage Execution Team
            Reporter:
            john.esmet@gmail.com John Esmet
            Votes:
            0 Vote for this issue
            Watchers:
            11 Start watching this issue

              Created:
              Updated:
              Resolved: