[SERVER-25286] Remove drop2.js dependency on count scan yield behavior Created: 26/Jul/16 Updated: 05/Apr/17 Resolved: 15/Dec/16 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Storage |
| Affects Version/s: | None |
| Fix Version/s: | 3.2.12, 3.4.2, 3.5.2 |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | David Hatch | Assignee: | Kyle Suarez |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Attachments: |
|
||||||||
| Issue Links: |
|
||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||
| Operating System: | ALL | ||||||||
| Backport Requested: |
v3.4, v3.2
|
||||||||
| Sprint: | Query 2017-01-23 | ||||||||
| Participants: | |||||||||
| Linked BF Score: | 0 | ||||||||
| Description |
|
The drop2.js test command can fail in particular atypical timing of the parallel shells. drop2.js uses a count command with a infinite $where clause in order to block a drop operation so that we may check whether killOp can be used on the drop collection command. We believe this test is attempting to confirm that we are able to issue a killOp on a drop collection command, but that the operation is not interrupted, which prior to On a correct execution, the count command acquires a read lock on the collection, preventing it from being dropped. However, if the count command yields, it releases the collection lock. This allowed the collection to drop before we can observe it in the currentOp output in drop2.js. max.hirschhorn suggests that we rewrite this test in order to: 1. Issue a fsyncLock command. This removes the dependency on the yielding behavior of the count command. We have inspected the code path and confirmed that the only call to checkForInterrupt() during the execution of a drop command is here, before the drop command attempts to acquire locks here. |
| Comments |
| Comment by Githook User [ 20/Jan/17 ] |
|
Author: {u'username': u'ksuarz', u'name': u'Kyle Suarez', u'email': u'kyle.suarez@mongodb.com'}Message: Tweaks killop_drop_collection.js to not use ES6 features and the new response format of fsyncUnlock. (cherry picked from commit 703678d473121b6402df10c21060241096ee2722) Conflicts: |
| Comment by Githook User [ 18/Jan/17 ] |
|
Author: {u'username': u'RedBeard0531', u'name': u'Mathias Stearn', u'email': u'redbeard0531@gmail.com'}Message: Revert " This reverts commit 3c2c8f709d7043d22d1161fce807c40e4d624742. |
| Comment by Githook User [ 18/Jan/17 ] |
|
Author: {u'username': u'ksuarz', u'name': u'Kyle Suarez', u'email': u'kyle.suarez@mongodb.com'}Message: (cherry picked from commit 703678d473121b6402df10c21060241096ee2722) Conflicts: |
| Comment by Githook User [ 18/Jan/17 ] |
|
Author: {u'username': u'ksuarz', u'name': u'Kyle Suarez', u'email': u'kyle.suarez@mongodb.com'}Message: (cherry picked from commit 703678d473121b6402df10c21060241096ee2722) Conflicts: |
| Comment by Githook User [ 15/Dec/16 ] |
|
Author: {u'username': u'ksuarz', u'name': u'Kyle Suarez', u'email': u'kyle.suarez@mongodb.com'}Message: |
| Comment by David Hatch [ 26/Jul/16 ] |
|
Attached is a patch that adds a repo.js script, and some failpoints to the server to reproduce the failure case. |