[SERVER-31120] Invariant failure remotesExhausted_inlock() || _lifecycleState == kKillComplete Created: 17/Sep/17 Updated: 30/Oct/23 Resolved: 20/Sep/17 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Internal Code |
| Affects Version/s: | 3.2.19 |
| Fix Version/s: | 3.6.0-rc0 |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | A. Jesse Jiryu Davis | Assignee: | Mira Carey |
| Resolution: | Fixed | 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
|
||||||||||||
| Sprint: | Platforms 2017-10-02 | ||||||||||||
| Participants: | |||||||||||||
| Case: | (copied to CRM) | ||||||||||||
| Description |
|
Triggered by PyMongo's test suite, on my branch where I'm developing sessions. This is a mongos error from a sharded cluster with auth, when PyMongo is calling "getMore" on an aggregation cursor with "lsid":
Log attached. PyMongo was executing:
|
| Comments |
| Comment by Githook User [ 20/Sep/17 ] |
|
Author: {'email': 'jcarey@argv.me', 'name': 'Jason Carey', 'username': 'hanumantmk'}Message: When passing the wrong lsid to a cursor (not the lsid used to create it) This papers over the bad api and adds a test for the fix. |
| Comment by A. Jesse Jiryu Davis [ 19/Sep/17 ] |
|
That's great! Very helpful for driver testing if the server uasserts when getMore doesn't have the right lsid. I think the PyMongo code I was testing at the time did send a different lsid with getMore than with aggregate; that's fixed in my code now. |
| Comment by Mira Carey [ 18/Sep/17 ] |
|
I was able to reproduce this by issuing a getMore with a different lsid than than the lsid used to create a cursor. It may also happen if a getMore is issued without an lsid for a cursor that was created with one. The fix will clean that up (so that a helpful uassert shows up instead of an invariant) |