I am trying to make use of search in a Riak 1.0.0 cluster loaded with some
data using the leveldb backend through the multibackend, with search turned,
and I am having some trouble.

I am getting the following error:

2011-10-21 20:47:49.268 [error] emulator Error in process <0.32444.102> on
node 'riak@10.214.219.175' with exit value:
{{nocatch,stream_timeout},[{riak_search_op_utils,gather_stream_results,4}]}

The Ruby client dies with a EOFError: end of file reached.

There are also a few of these in the logs:

2011-10-21 20:47:45.624 [info]
<0.88.0>@riak_core_sysmon_handler:handle_event:85 monitor long_gc
<0.32535.102> [{initial_call,{mi_server,range,10erator/2-fun-1-',2}}]
[{timeout,51},{old_heap_block_size,0},{heap_block_size,1346269},{mbuf_size,0},{stack_size,13},{old_heap_size,0},{heap_size,931549}]
2011-10-21 20:47:45.873 [info]
<0.88.0>@riak_core_sysmon_handler:handle_event:85 monitor long_gc
<0.32523.102> [{initial_call,{mi_server,range,10ator,2}}]
[{timeout,54},{old_heap_block_size,0},{heap_block_size,2103540},{mbuf_size,0},{stack_size,19},{old_heap_size,0},{heap_size,903282}]

I tracked down the issue to part of my query where I try to limited the
results by time using a range.  Depending how the query is generated, I may
want a specific range, or records with a timestamp less than some value or
timestamps greater than some value.

I found that if I limited the timestamps to a range that covers a reasonable
number of records the query succeeds.  But if the query is of the
form 'ts:[0 TO 1319228408]', then Riak generates that error and the client
connection it shutdown.  I am guessing that that queries covers too many
records, which is causing the nodes to take longer than expected to respond,
and that some timeout is being reached and Riak kills the query.  Is that
correct?

If so, is there a way to execute a query matching an integer field with a <
or > that may match many records (millions)?

Is there a way to increase whatever timeout is being reached?

Also, while looking at the Solr query syntax I notice that you can use '*'
instead of trying to use a min or max value in the range to emulate < or >,
e.g. 'ts:* TO 1319228408]', but Riak does not support this syntax.

Elias Levy
_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to