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

dropDatabase doesn't validate writeConcern until one replicated database is created

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Minor - P4 Minor - P4
    • None
    • Affects Version/s: 3.3.10
    • Component/s: Write Ops
    • Labels:
      None
    • ALL

      On a fresh replica set with three nodes, version 3.3.10-421-gbd66e1b, the dropDatabase command doesn't check if its writeConcern can be satisfied. A writeConcern of w: 99 should cause a writeConcernError, but it doesn't:

      replset:PRIMARY> db.runCommand({dropDatabase: 1, writeConcern: {w: 99}})
      { "ok" : 1 }
      

      Once we've created any databases, dropDatabase with writeConcern seems to work as expected. Now it causes a writeConcernError:

      replset:PRIMARY> db.c.insert({})
      WriteResult({ "nInserted" : 1 })
      replset:PRIMARY> db.runCommand({dropDatabase: 1, writeConcern: {w: 99}})
      {
             	"dropped" : "test",
             	"ok" : 1,
             	"writeConcernError" : {
             		"code" : 100,
             		"errmsg" : "Not enough data-bearing nodes"
             	}
      }
      

      From this point forward, even after dropping all databases except "local", dropDatabases still reports a writeConcernError with w: 99 as expected:

      replset:PRIMARY> use foo
      switched to db foo
      replset:PRIMARY> db.runCommand({dropDatabase: 1, writeConcern: {w: 99}})
      {
             	"ok" : 1,
             	"writeConcernError" : {
             		"code" : 100,
             		"errmsg" : "Not enough data-bearing nodes"
             	}
      }
      replset:PRIMARY> use bar
      switched to db bar
      replset:PRIMARY> db.runCommand({dropDatabase: 1, writeConcern: {w: 99}})
      {
             	"ok" : 1,
             	"writeConcernError" : {
             		"code" : 100,
             		"errmsg" : "Not enough data-bearing nodes"
             	}
      }
      replset:PRIMARY> db.runCommand({dropDatabase: 1, writeConcern: {w: 99}})
      {
             	"ok" : 1,
             	"writeConcernError" : {
             		"code" : 100,
             		"errmsg" : "Not enough data-bearing nodes"
             	}
      }
      

            Assignee:
            Unassigned Unassigned
            Reporter:
            jesse@mongodb.com A. Jesse Jiryu Davis
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: