-
Notifications
You must be signed in to change notification settings - Fork 1.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[python] change feed not returning all results #5940
Comments
@mbroadst Does this go away if you lower the I suspect it's waiting on the squash timeout, and whether that happens or not depends more or less on random timing. If all modifications get into the first batch, they are sent immediately. But if one of them is processed slightly later, it will have to wait the full 1,000,000 seconds (or until the changefeed queue gets close to full, e.g. by generating additional changes through the Is this based on one of our tests? It seems fragile, and I'm not sure if it should be there. Also pinging @mlucy in case I'm misunderstanding something. |
@danielmewes this is actually one of the rql_test suite tests: https://github.com/rethinkdb/rethinkdb/blob/next/test/rql_test/src/limits.yaml#L106. It looks like this works just fine on my ubuntu trusty 14.04 VM, so the culprit might be OSX 10.10.5.. somehow |
As far as my current understanding goes, I think that the culprit is that the test is bad. It tests something that we don't guarantee, and relies on timing and undefined behavior. @mlucy might know more about what this test was meant to test originally. |
I think this test is meant to check whether or not the changefeed queue size actually triggers documents being sent. I think @danielmewes is right that it doesn't work, though; I think it needs to read an initial empty batch before doing the inserts. |
Okay well that makes me feel a little better! There are a number of similar tests that fail for me, so I might as well list them here:
|
I've got a few more here:
|
Interesting observation regarding the |
Regarding the test in I'm not sure why we're only fetching 90 values though, and why that's correct. The limit is 100, so it seems to me as if we could get 100 valid results first, and only then see the error. Additionally, this test again seems timing-sensitive, because all of our drivers prefetch batches on cursors (including changefeeds). |
oh right that was a silly oversight on my part. yeah I agree with your observation, it's definitely failing for me here because a valid number of results is in fact being returned (perhaps we're not buffering as aggressively in the C++ driver presently) |
Looking at the first one there is no problem with
Since that has that value, we pass... very much not what the test writer was expecting I am sure, but not a general problem in our testing system. @nighelles those lines have your name on them, can you rethink them a bit (yes... I am on a roll). |
@larkost yeah it seems like a ton of these tests inadvertently depend on or are affected by existing data in the table. It does make me wonder why our tests are getting different results though, I should look into that since we aren't cleaning the tables between runs |
Hey, I'm trying to get the C++ driver to pass all tests for v2.3.4 and have run into a particularly weird case in what seems to only be my current two test rethink servers. I'm running the following python code:
which results in the following output:
and then it just hangs on the last result, which never arrives unless I go into the web console of the server and issue a
r.table('foo').delete()
from the Data Explorer. As soon as that happens, the last entry{u'old_val': None, u'new_val': {u'id': 2}}
pops into sight and the script completes execution.Any ideas?
The text was updated successfully, but these errors were encountered: