[SERVER-387] currentOp() and killOp() don't work right with db.eval() Created: 26/Oct/09 Updated: 12/Jul/16 Resolved: 17/Mar/11 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | JavaScript |
| Affects Version/s: | None |
| Fix Version/s: | 1.9.0 |
| Type: | Bug | Priority: | Minor - P4 |
| Reporter: | Dwight Merriman | Assignee: | Aaron Staple |
| Resolution: | Done | Votes: | 2 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||||||||||||||||||||||||||||||
| Participants: | |||||||||||||||||||||||||||||||||||||||||||||
| Description |
|
currentOp() doesn't indicate an eval is in progress. killOp() won't kill it either. |
| Comments |
| Comment by Eliot Horowitz (Inactive) [ 17/Mar/11 ] |
|
resolving this as most of this is fixed and the rest of addressed by linked cases |
| Comment by auto [ 20/Dec/10 ] |
|
Author: {u'login': u'astaple', u'name': u'Aaron', u'email': u'aaron@10gen.com'}Message: |
| Comment by auto [ 14/Dec/10 ] |
|
Author: {u'login': u'astaple', u'name': u'Aaron', u'email': u'aaron@10gen.com'}Message: |
| Comment by auto [ 06/Oct/10 ] |
|
Author: {'login': 'astaple', 'name': 'Aaron', 'email': 'aaron@10gen.com'}Message: |
| Comment by auto [ 23/Sep/10 ] |
|
Author: {'login': 'astaple', 'name': 'Aaron', 'email': 'aaron@10gen.com'}Message: |
| Comment by auto [ 23/Sep/10 ] |
|
Author: {'login': 'astaple', 'name': 'Aaron', 'email': 'aaron@10gen.com'}Message: |
| Comment by auto [ 20/Sep/10 ] |
|
Author: {'login': 'astaple', 'name': 'Aaron', 'email': 'aaron@10gen.com'}Message: |
| Comment by Aaron Staple [ 15/Sep/10 ] |
|
Also, a note to myself, since the 'shell utils' aren't installed for server side js we don't need to worry about implementing a killop interrupt for the sleep command. |
| Comment by Aaron Staple [ 15/Sep/10 ] |
|
It looks like we can do this in v8 by enabling v8 mutex preemption and then running a separate thread which periodically checks for timeouts and killop interrupts and kills pertinent v8 threads as needed using v8::TerminateExecution. |
| Comment by Eliot Horowitz (Inactive) [ 15/Sep/10 ] |
|
Can you figure out how we might do it? |
| Comment by Aaron Staple [ 15/Sep/10 ] |
|
Implementing in spidermonkey was relatively easy because we already had some callbacks in place for quota timeouts. The v8 engine has no such callbacks enabled currently. Please let me know if I should implement the killop behavior for v8 as well. |
| Comment by auto [ 15/Sep/10 ] |
|
Author: {'login': 'astaple', 'name': 'Aaron', 'email': 'aaron@10gen.com'}Message: |
| Comment by Eliot Horowitz (Inactive) [ 09/Aug/10 ] |
|
I think that field is new - this case is very old |
| Comment by Aaron Staple [ 09/Aug/10 ] |
|
How should currentOp indicate an eval is in progress? It looks like the query field already contains an $eval subfield if there is a db.eval happening. |
| Comment by auto [ 16/Mar/10 ] |
|
Author: {'login': 'erh', 'name': 'Eliot Horowitz', 'email': 'eliot@10gen.com'}Message: make killOp work for map reduce |