OPP uses lexical ordering on the keys, which isn't going to be the
same as the natural order for a time-based uuid.
On Mon, May 31, 2010 at 2:57 AM, Leslie Viljoen <leslievilj...@gmail.com> wrote:
> Hello!
>
> I am using an OrderPreservingPartitioner and sequential UUID's as
> keys. When I use get_range I frequently get an error indicating that
> my start key is not before or equal to my finish key, which seems
> impossible. The code to request slices looks like this:
>
> sometime = Time.now
> a = UUIDTools::UUID.timestamp_create(sometime)
> b = UUIDTools::UUID.timestamp_create(sometime + 1)
> slice = @cassandra.get_range(:ReportData, :start => a.to_s, :finish => b.to_s)
> puts "SORT ERROR!" if a >= b    # this never displays
>
>
>
> This is the error I get:
>
> /usr/lib/ruby/gems/1.8/gems/cassandra-0.8.2/lib/../vendor/gen-rb/cassandra.rb:152:in
> `recv_get_range_slices': start key must sort before (or equal to)
> finish key in your partitioner!
> (CassandraThrift::InvalidRequestException)
>        from 
> /usr/lib/ruby/gems/1.8/gems/cassandra-0.8.2/lib/../vendor/gen-rb/cassandra.rb:142:in
> `get_range_slices'
>        from 
> /usr/lib/ruby/gems/1.8/gems/thrift_client-0.4.0/lib/thrift_client.rb:140:in
> `send'
>        from 
> /usr/lib/ruby/gems/1.8/gems/thrift_client-0.4.0/lib/thrift_client.rb:140:in
> `proxy'
>        from (eval):1:in `get_range_slices'
>        from 
> /usr/lib/ruby/gems/1.8/gems/cassandra-0.8.2/lib/cassandra/protocol.rb:78:in
> `_get_range'
>        from 
> /usr/lib/ruby/gems/1.8/gems/cassandra-0.8.2/lib/cassandra/cassandra.rb:230:in
> `get_range'
>        from ./read.rb:29:in `get_range'
>        from ./read.rb:62
>        from ./read.rb:58:in `loop'
>        from ./read.rb:58
>



-- 
Jonathan Ellis
Project Chair, Apache Cassandra
co-founder of Riptano, the source for professional Cassandra support
http://riptano.com

Reply via email to