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

when multiple map reduce jobs are running and one is holding the js mutex indefinitely, it is not obvious which is hogging the js mutex

    • Type: Icon: Improvement Improvement
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: MapReduce
    • None
    • Query
    • Fully Compatible

      Below I have two mr jobs with infinite loops in the map function. I believe op 117 is running and holding the js mutex, while 122 is not. If I kill 122 nothing happens (it does not stop running) until 117 is killed as well.

      In this case it's not obvious from the currentOp output which op needs to be killed so that others can run.

      > db.currentOp().inprog
      [
      {
      "opid" : 117,
      "active" : true,
      "lockType" : "read",
      "waitingForLock" : false,
      "secs_running" : 12,
      "op" : "query",
      "ns" : "test.c",
      "query" : {
      "mapreduce" : "c",
      "map" : function cf_47f() {
      while (1) {
      }
      },
      "reduce" : function cf_48f()

      { } },
      "client" : "127.0.0.1:51528",
      "desc" : "conn",
      "msg" : "m/r: (1/3) emit phase 0/1 0%"
      },
      {
      "opid" : 122,
      "active" : true,
      "waitingForLock" : false,
      "secs_running" : 9,
      "op" : "query",
      "ns" : "?",
      "query" : {
      "mapreduce" : "c",
      "map" : function cf_49f() {
      while (1) {
      }
      },
      "reduce" : function cf_50f() {} }

      ,
      "client" : "127.0.0.1:51563",
      "desc" : "conn"
      }
      ]

            Assignee:
            backlog-server-query Backlog - Query Team (Inactive)
            Reporter:
            aaron Aaron Staple
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: