Skip to content

enable streaming for ts list keys#1291

Merged
borshop merged 14 commits intoend-to-end/timeseriesfrom
fix/az+jm/enable-streaming-for-ts-list_keys
Dec 10, 2015
Merged

enable streaming for ts list keys#1291
borshop merged 14 commits intoend-to-end/timeseriesfrom
fix/az+jm/enable-streaming-for-ts-list_keys

Conversation

@hmmr
Copy link
Contributor

@hmmr hmmr commented Dec 6, 2015

RTS-697, RTS-718.

This PR uses the new {o, ...} sext-encoded keys for TS, and enables streaming list_keys.

Complementary PRs: basho/riak-erlang-client#253 and basho/riak_test#953.

Jon Meredith added 5 commits December 2, 2015 18:06
Alternate riak_object:newts for making objects with non-binary keys.
Customized the eleveldb:to/from_object calls to encode any key as sext,
but leave the key as a sext-encoded binary on decode.

Timing measurements (mean over 100k trials)
```
                 Previous  Current
to_object_ke       31us     29us
from_object_key    82us     71us
```
Alternate riak_object:newts for making objects with non-binary keys.
Customized the eleveldb:to/from_object calls to encode any key as sext,
but leave the key as a sext-encoded binary on decode.

Timing measurements (mean over 100k trials)
```
                 Previous  Current
to_object_ke       31us     29us
from_object_key    82us     71us
```
With the changes to support time series the trick of using
an empty binary for the first key sorted *after* the tuple,
so switched to using a bare atom instead.

```
(dev1@127.0.0.1)7> <<>> < {a,b,c}.
false
(dev1@127.0.0.1)8> undefined < {a,b,c}.
true
```
Previously was crashing before the reap when it tried to issue the
reaping get.
No longer needs the special TS list keys coverage code
as the keys can be directly recovered.  One consequence of this
is that objects are not retrieved so deleted entries will show up
until they are reaped from the vnode like regular riak KV.

If you retrieve them with C:get(..., [deletedvclock]) you will
see they are removed but have not been reaped yet.
hmmr added 6 commits December 6, 2015 20:45
…ho/riak_kv into feature/desc-compatible-key-encoding
…sreq)

This is necessary to correctly pigeonhole timestamps into #tscell's

# Conflicts:
#	src/riak_kv_pb_timeseries.erl
only evaluated to true for {PK, LK} where key elements were binaries,
which is no longer the case with new TS keys like
{o, Family, Series, Timestamp}.
@hmmr hmmr force-pushed the fix/az+jm/enable-streaming-for-ts-list_keys branch from 0d3feaf to 2f75912 Compare December 8, 2015 22:50
hmmr added 2 commits December 9, 2015 01:25
…for-ts-list_keys

# Conflicts:
#	src/riak_kv_eleveldb_backend.erl
#	src/riak_kv_pb_timeseries.erl
#	src/riak_kv_qry_coverage_plan.erl
#	src/riak_kv_vnode.erl
#	src/riak_object.erl
unbreak tests bucket_prop_needers, packObj, is_updated
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clever, I like it.

@hazen
Copy link

hazen commented Dec 10, 2015

👍 87d4a5d

borshop added a commit that referenced this pull request Dec 10, 2015
…-list_keys

enable streaming for ts list keys

Reviewed-by: javajolt
@hazen
Copy link

hazen commented Dec 10, 2015

@borshop merge

@borshop borshop merged commit 87d4a5d into end-to-end/timeseries Dec 10, 2015
@hazen hazen deleted the fix/az+jm/enable-streaming-for-ts-list_keys branch December 10, 2015 02:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants