[SERVER-22184] Operations that fail against a secondary in a sharded cluster may have their error message swallowed Created: 14/Jan/16 Updated: 03/Jan/18 Resolved: 25/Feb/16 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Sharding |
| Affects Version/s: | 3.2.1 |
| Fix Version/s: | 3.2.4, 3.3.3 |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Ricardo Lorenzo | Assignee: | Adam Midvidy |
| Resolution: | Done | Votes: | 4 |
| Labels: | code-and-test | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Attachments: |
|
||||||||
| Issue Links: |
|
||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||
| Backport Completed: | |||||||||
| Sprint: | Sharding F (01/29/16), Sharding 10 (02/19/16), Integration 11 (03/14/16) | ||||||||
| Participants: | |||||||||
| Case: | (copied to CRM) | ||||||||
| Description |
|
Instead of getting the real error message that mongod returned propagated back to the user, you get the message "Failed to do query, no good nodes in test-rs0, last error: can't query replica set node ubuntu:10011: :: caused by :: 0 assertion src/mongo/client/dbclientcursor.cpp:420" Seems to be coming from checkSlaveQueryResult() calling peekError() and it not finding a $err field |
| Comments |
| Comment by Githook User [ 25/Feb/16 ] |
|
Author: {u'username': u'amidvidy', u'name': u'Adam Midvidy', u'email': u'amidvidy@gmail.com'}Message: (cherry picked from commit 3a5c0f9bcb46f083863622e0d734cf29023e7275) |
| Comment by Githook User [ 25/Feb/16 ] |
|
Author: {u'username': u'amidvidy', u'name': u'Adam Midvidy', u'email': u'amidvidy@gmail.com'}Message: |
| Comment by Spencer Brody (Inactive) [ 14/Jan/16 ] |
|
Confirmed the bug and that it is a regression over 3.0. Attaching a jstest that repros the problem |
| Comment by Eric Milkie [ 14/Jan/16 ] |
|
This ticket probably needs a title change, but the general problem appears to be that in 3.2, certain errors are no longer being propagated back from shards through mongos to the client. What results instead is that the internal C++ driver hits a verify because the descriptive error field is missing. |