Trying to fix "reactor unclean" test fails #94
Merged
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.
I've looked into sporadically failed tests and found that this happens for tests that create MongoConnection and immediately call its disconnect() without issuing any queries. MongoConnection() constructor starts connecting in background. Connection process in turn starts name resolution of "localhost" into ip-address. If name resolution doesn't finish until disconnect() returns (it takes exactly 1 main loop round-trip), trial fails with "reactor unclean". (Name resolution is deferred to separate thread, so there is race condition which fails more often on slow machines).
Unfortunately, I didn't found any good way to wait until name resolution is done :(
The simpliest way to solve this is to change "localhost" to "127.0.0.1" in test_queries.py, test_aggregate.py and test_connection.py. Or to issue any command on MongoConnection in corresponding test methods.
After changing "localhost" to "127.0.0.1" I'm not able to reproduce this anymore.
Lets see what Travis will say