[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 Created: 14/Dec/10 Updated: 06/Dec/22 Resolved: 17/May/17 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | MapReduce |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Major - P3 |
| Reporter: | Aaron Staple | Assignee: | Backlog - Query Team (Inactive) |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||
| Assigned Teams: |
Query
|
||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||
| Participants: | |||||||||
| Description |
|
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 "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() {} } , |
| Comments |
| Comment by Asya Kamsky [ 17/May/17 ] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
This is no longer an issue as currentOp() now shows time acquiring lock, whether process is waiting for lock and for mapreduce what phase it's in and therefore it's easy to tell which process is running and which are waiting.
|