Hi Francisco,

You are correct; Riak is URL decoding Link headers in
riak_kv_wm_raw:get_link_heads/2.
I've opened bug 617 to address this issue:
https://issues.basho.com/show_bug.cgi?id=617

Thanks,
Dan

Daniel Reverri
Developer Advocate
Basho Technologies, Inc.
d...@basho.com


On Wed, Aug 11, 2010 at 12:31 PM, francisco treacy <
francisco.tre...@gmail.com> wrote:

> I have a doubt regarding links and URI-escaping in Riak.
>
> Say I create document 'test/first' with two links (notice %40 is
> character @ uri-escaped):
>  => 'test/second%40basho.com'
>  => 'test/th...@basho.com'
>
> $> curl -X PUT -H "content-type:text/plain" \
>  -H "Link: </riak/test/second%40basho.com>; riaktag=\"foo\",
> </riak/test/th...@basho.com>; riaktag=\"bar\"" \
>  http://localhost:8098/riak/test/first --data "first"
>
> $> curl -X PUT -H "content-type:text/plain"
> http://localhost:8098/riak/test/second%40basho.com --data "second"
>
> $> curl -X PUT -H "content-type:text/plain"
> http://localhost:8098/riak/test/th...@basho.com --data "third"
>
> When I walk first's links, I only obtain 'test/th...@basho.com', not
> 'test/second%40basho.com'.
>
> $> curl http://localhost:8098/riak/test/first/_,_,_
>
> --IgVE1zwvyzEQq9FQ1HtOaFS8EBN
> Content-Type: multipart/mixed; boundary=WOfmvASHvjIAAXdVoDNMnLViS2B
>
> --WOfmvASHvjIAAXdVoDNMnLViS2B
> X-Riak-Vclock: a85hYGBgzGDKBVIsTJsW1mcwJTLmsTJUZ10/ypcFAA==
> Location: /riak/test/third%40basho.com
> Content-Type: text/plain
> Link: </riak/test>; rel="up"
> Etag: 4gw3mCKxcnuyMAzLYMpJbl
> Last-Modified: Wed, 11 Aug 2010 18:39:55 GMT
>
> third
> --WOfmvASHvjIAAXdVoDNMnLViS2B--
>
> --IgVE1zwvyzEQq9FQ1HtOaFS8EBN--
>
>
> If I update first's links, now with third being 'test/third%40basho.com':
>
> $> curl -X PUT -H "content-type:text/plain" \
>  -H "Link: </riak/test/second%40basho.com>; riaktag=\"foo\",
> </riak/test/third%40basho.com>; riaktag=\"bar\"" \
>  http://localhost:8098/riak/test/first --data "first"
>
> I get the same results when I do the link-walking.
> 'test/second%40basho.com' is never retrieved. Doing an equivalent
> map/reduce returns a {not_found: {  'test/sec...@basho.com' }}
>
> This shows that in the process of escaping/unescaping there are cases
> in which link-walking (and map/reduce for that matter) don't work.
> Riak should probably never unescape, and assume all keys are already
> escaped.
>
> I've seen some work on Ripple in this direction, and that's the reason
> my code is breaking after I updated. I'm also wondering how to deal
> with this in riak-js.
>
> Thanks,
> Francisco
>
> _______________________________________________
> 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

Reply via email to