[SERVER-6909] verify assertion when new version of a document is requested that does not match dotted field expression of original query; excessive logging Created: 31/Aug/12 Updated: 11/Jul/16 Resolved: 18/Sep/12 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Write Ops |
| Affects Version/s: | 2.2.0 |
| Fix Version/s: | 2.2.1, 2.3.0 |
| Type: | Bug | Priority: | Critical - P2 |
| Reporter: | Aristarkh Zagorodnikov | Assignee: | Eliot Horowitz (Inactive) |
| Resolution: | Done | Votes: | 4 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Attachments: |
|
||||||||||||
| Issue Links: |
|
||||||||||||
| Operating System: | Linux | ||||||||||||
| Participants: | |||||||||||||
| Description |
|
The update version of findAndModify attempts to find the new version of a document using a modified version of the original query (queryModified). A dotted field expression may be copied from the original query to queryModified, but if that field is changed by the update the constraint on that field may cause the match to fail and prevent the new version of the document from being found. (And this causes the verify to fire.) Test
It also looks like there is a debugging log line in the code:
– Aaron ----------------------------------------------- My logs are filled with the following: And, occasionally: } The resulting error is: exception: assertion src/mongo/db/commands/find_and_modify.cpp:184 (response: { "errmsg" : "exception: assertion src/mongo/db/commands/find_and_modify.cpp:184", "code" : 0, "ok" : 0.0 }) |
| Comments |
| Comment by auto [ 18/Sep/12 ] |
|
Author: {u'date': u'2012-09-17T23:08:03-07:00', u'email': u'eliot@10gen.com', u'name': u'Eliot Horowitz'}Message: |
| Comment by auto [ 18/Sep/12 ] |
|
Author: {u'date': u'2012-09-17T23:08:03-07:00', u'email': u'eliot@10gen.com', u'name': u'Eliot Horowitz'}Message: |
| Comment by Aristarkh Zagorodnikov [ 08/Sep/12 ] |
|
Backport sounds great, because we like everything about 2.2. |
| Comment by Ian Whalen (Inactive) [ 08/Sep/12 ] |
|
onyxmaster - keep an eye on this ticket as there's a chance it will also be backported to a 2.2.x release (pending review by our team) |
| Comment by Aristarkh Zagorodnikov [ 08/Sep/12 ] |
|
Well, looks like we're sticking with 2.0 until 2.4 comes. |
| Comment by Ian Whalen (Inactive) [ 07/Sep/12 ] |
|
onyxmaster, we haven't solidified what's in/out yet, but the plan is indeed to fix for the 2.4.0 stable release. |
| Comment by Sergey Shinderuk [ 07/Sep/12 ] |
|
One more test case (without a dotted expression): > db.c.remove() }, new: true, upsert: true }) |
| Comment by Aristarkh Zagorodnikov [ 01/Sep/12 ] |
|
Thanks for the information. |
| Comment by Aristarkh Zagorodnikov [ 31/Aug/12 ] |
|
The entire contents of one of our master 2.2 upgrade attempt. |
| Comment by Scott Hernandez (Inactive) [ 31/Aug/12 ] |
|
Please attach a large section of your log. |