Hi Sean, This one really is a bug with 2i pagination on Equals term queries[1].
I've fixed it already[2], I'm very sorry that this one got out into the wild. It is something that worked then stopped working at some point in a merge. It was a pretty bad oversight that we didn't have a test for this condition to catch the regression. I've added a test[3] to the suite for the issue and verified the patch. I guess there will be a 1.4.1 soon. Apologies, again. Russell [1] https://github.com/basho/riak_kv/issues/611 [2] https://github.com/basho/riak_kv/pull/612 [3] https://github.com/basho/riak_test/pull/340 On 27 Jul 2013, at 01:11, Sean McKibben <grap...@graphex.com> wrote: > So when I try to use pagination, it doesn't seem to be picking up my > continuation. I'm having trouble parsing the json I get back using > stream=true (and there is still a timeout) so I went to just using > pagination. Perhaps I'm doing it wrong, (likely, it has been a long day) but > riak seems to be ignoring my continuation: > > (pardon the sanitization) > curl > 'http://127.0.0.1:8098/buckets/mybucket/index/test_bin/myval?max_results=5' > {"keys":["1","2","3","4","5"],"continuation":"g20AAABAMDAwMDE1ZWVjMmNiZjY3Y2Y4YmU3ZTVkMWNiZTVjM2ZkYjg2YWU0MGIwNzNjMTE3NDYyZjEzMTNlMDQ5YmI2ZQ=="} > > curl > 'http://127.0.0.1:8098/buckets/mybucket/index/test_bin/myval?max_results=5&continuation=g20AAABAMDAwMDE1ZWVjMmNiZjY3Y2Y4YmU3ZTVkMWNiZTVjM2ZkYjg2YWU0MGIwNzNjMTE3NDYyZjEzMTNlMDQ5YmI2ZQ==' > {"keys":["1","2","3","4","5"],"continuation":"g20AAABAMDAwMDE1ZWVjMmNiZjY3Y2Y4YmU3ZTVkMWNiZTVjM2ZkYjg2YWU0MGIwNzNjMTE3NDYyZjEzMTNlMDQ5YmI2ZQ=="} > > The same keys and continuation value are returned regardless of whether my > request contains a continuation value. I've tried swapping the order of > max_results and continuation without any luck. I also made sure that my > continuation value was url encoded. Hopefully I'm not missing something > obvious here. Well, come to think of it, hopefully I am missing something > obvious! > > Sean > > On Jul 26, 2013, at 6:43 PM, Russell Brown <russell.br...@mac.com> wrote: > >> For a work around you could use streaming and pagination. >> >> Request smaller pages of data (i.e. sub 60 seconds worth) and use streaming >> to get the results to your client sooner. >> >> In HTTP this would look like >> >> http://127.0.0.1:8098/buckets/mybucket/index/test_bin/myval?max_results=10000&stream=true >> >> your results will include a continuation like >> >> {"continuation":"g2gCYgAAFXttAAAABDU0OTk="} >> >> and you can use that to get the next N results. Breaking your query up that >> way should duck the timeout. >> >> Furthermore, adding &stream=true will mean the first results is received >> very rapidly. >> >> I don't think the Ruby client is up to date for the new 2i features, but you >> could monkeypatch as before. >> >> Cheers >> >> Russell >> >> On 26 Jul 2013, at 19:00, Sean McKibben <grap...@graphex.com> wrote: >> >>> Thank you for looking in to this. This is a major problem for our >>> production cluster, and we're in a bit of a bind right now trying to figure >>> out a workaround in the interim. It sounds like maybe a mapreduce might >>> handle the timeout properly, so hopefully we can do that in the meantime. >>> If there is any way we can have a hotfix ASAP though, that would be >>> preferable. Certainly would not be a problem for us to edit a value in the >>> config file (and given the lack of support in the ruby client for the >>> timeout setting, the ability to edit the global default would be preferred). >>> In the ruby client i had to monkeypatch it like this to even submit the >>> timeout value, which is not ideal: >>> >>> module Riak >>> class Client >>> class HTTPBackend >>> def get_index(bucket, index, query) >>> bucket = bucket.name if Bucket === bucket >>> path = case query >>> when Range >>> raise ArgumentError, t('invalid_index_query', :value => >>> query.inspect) unless String === query.begin || Integer === query.end >>> index_range_path(bucket, index, query.begin, query.end) >>> when String, Integer >>> index_eq_path(bucket, index, query, 'timeout' => '260000') >>> else >>> raise ArgumentError, t('invalid_index_query', :value => >>> query.inspect) >>> end >>> response = get(200, path) >>> JSON.parse(response[:body])['keys'] >>> end >>> end >>> end >>> end >>> >>> Thanks for the update, >>> Sean >>> >>> >>> >>> On Jul 26, 2013, at 4:49 PM, Russell Brown <russell.br...@mac.com> wrote: >>> >>>> Hi Sean, >>>> I'm very sorry to say that you've found a featurebug. >>>> >>>> There was a fix put in here https://github.com/basho/riak_core/pull/332 >>>> >>>> But that means that the default timeout of 60 seconds is now honoured. In >>>> the past it was not. >>>> >>>> As far as I can see the 2i endpoint never accepted a timeout argument, and >>>> it still does not. >>>> >>>> The fix would be to add the timeout to the 2i API endpoints, and I'll do >>>> that straight away. >>>> >>>> In the meantime, I wonder if streaming the results would help, or if you'd >>>> still hit the overall timeout? >>>> >>>> Very sorry that you've run into this. Let me know if streaming helps, I've >>>> raised an issue here[1] if you want to track this bug >>>> >>>> Cheers >>>> >>>> Russell >>>> >>>> [1] https://github.com/basho/riak_kv/issues/610 >>>> >>>> >>>> On 26 Jul 2013, at 17:59, Sean McKibben <grap...@graphex.com> wrote: >>>> >>>>> I should have mentioned that I also tried: >>>>> curl -H "X-Riak-Timeout: 260000" >>>>> "http://127.0.0.1:8098/buckets/mybucket/index/test_bin/myval?timeout=260000" >>>>> -i >>>>> but still receive the 500 error below exactly at the 60 second mark. Is >>>>> this a bug? >>>>> >>>>> Secondary to getting this working at all, is this documented anywhere? >>>>> and any way to set this timeout using the ruby riak client? >>>>> >>>>> Stream may well work, but I'm going to have to make a number of changes >>>>> on the client side to deal with the results. >>>>> >>>>> Sean >>>>> >>>>> On Jul 26, 2013, at 3:53 PM, Brian Roach <ro...@basho.com> wrote: >>>>> >>>>>> Sean - >>>>>> >>>>>> The timeout isn't via a header, it's a query param -> &timeout=xxxx >>>>>> >>>>>> You can also use stream=true to stream the results. >>>>>> >>>>>> - Roach >>>>>> >>>>>> Sent from my iPhone >>>>>> >>>>>> On Jul 26, 2013, at 3:43 PM, Sean McKibben <grap...@graphex.com> wrote: >>>>>> >>>>>>> We just upgraded to 1.4 and are having a big problem with some of our >>>>>>> larger 2i queries. We have a few key queries that takes longer than 60 >>>>>>> seconds (usually about 110 seconds) to execute, but after going to 1.4 >>>>>>> we can't seem to get around a 60 second timeout. >>>>>>> >>>>>>> I've tried: >>>>>>> curl -H "X-Riak-Timeout: 260000" >>>>>>> "http://127.0.0.1:8098/buckets/mybucket/index/test_bin/myval?x-riak-timeout=260000" >>>>>>> -i >>>>>>> >>>>>>> But I always get >>>>>>> HTTP/1.1 500 Internal Server Error >>>>>>> Vary: Accept-Encoding >>>>>>> Server: MochiWeb/1.1 WebMachine/1.10.0 (never breaks eye contact) >>>>>>> Date: Fri, 26 Jul 2013 21:41:28 GMT >>>>>>> Content-Type: text/html >>>>>>> Content-Length: 265 >>>>>>> Connection: close >>>>>>> >>>>>>> <html><head><title>500 Internal Server >>>>>>> Error</title></head><body><h1>Internal Server Error</h1>The server >>>>>>> encountered an error while processing this >>>>>>> request:<br><pre>{error,{error,timeout}}</pre><P><HR><ADDRESS>mochiweb+webmachine >>>>>>> web server</ADDRESS></body></html> >>>>>>> >>>>>>> Right at the 60 second mark. What can I set to give my secondary index >>>>>>> queries more time?? >>>>>>> >>>>>>> This is causing major problems for us :( >>>>>>> >>>>>>> Sean >>>>>>> _______________________________________________ >>>>>>> riak-users mailing list >>>>>>> riak-users@lists.basho.com >>>>>>> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com >>>>> >>>>> _______________________________________________ >>>>> riak-users mailing list >>>>> riak-users@lists.basho.com >>>>> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com >>>> >>> >> >> >> _______________________________________________ >> riak-users mailing list >> riak-users@lists.basho.com >> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com > _______________________________________________ riak-users mailing list riak-users@lists.basho.com http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com