Fixed incorrect handling of responseFlags attribute of the OP_REPLY struct #1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hello,
I was attempting to get Mongo 1.8 working with Python 3.1.4. Upon making any connection to the server, I was greeted with this stack trace:
The problem was caused by
response_flagbit mongodb#3 being set as of Mongo 1.6. This tripped theAssertionError.In pymongo.helpers._unpack_response, there was a problem in how the
responseFlags were being parsed. Rather than checking to see if each
bit was set with a bitwise AND, the == operator was being used. This
meant that if more than one flag was ever set, then the == would return
False, and the logic would proceed incorrectly.
This has been changed to
response_flag & 2to check for bit #1.The value
2is derived from boolean 0b0010, meaning bit #1.The actual problem appears to have been introduced in Mongod 1.6 when
bit mongodb#3 is always set:
Thanks!
Jason Garber