But isn't the value itself JSON? Meaning this part: {struct, [{<<"bucket">>,<<"user">>}, {<<"key">>,<<"LikiWUPJSFuxtrhCYpsPfg">>}, {<<"vclock">>,
<<"a85hYGBgzGDKBVIsLKaZdzOYEhnzWBmes6Yd58sCAA==">>}, {<<"values">>, [{struct, [{<<"metadata">>, {struct, [{<<"X-Riak-VTag">>, <<"1KnL9Dlma9Yg4eMhRuhwtx">>}, {<<"X-Riak-Last-Modified">>, <<"Fri, 10 Jun 2011 03:05:11 GMT">>}]}}, {<<"data">>, <<131,108,0,0,0,18,104,2,100,0,6,114,...>>}]}]} So the only thing that is not JSON is the data itself, but when I get the value, shouldn't I be getting the all the info above which is JSON encoded? Thank you all for your help, Andrew On Thu, Jun 23, 2011 at 8:17 AM, Sean Cribbs <s...@basho.com> wrote: > The object has to be JSON-encoded to be marshalled into the Javascript VM, > and also on the way out if the Accept header indicates application/json. So > you have two places where it needs to be encodable into JSON. > On Thu, Jun 23, 2011 at 11:14 AM, Andrew Berman <rexx...@gmail.com> wrote: >> >> Mathias, >> >> I thought Riak was content agnostic when it came to the data being >> stored? The map phase is not running Riak.mapValuesJson, so why is >> the data itself going through the JSON parser? The JSON value >> returned by v with all the info is valid and I see the struct atom in >> there so mochijson2 can parse it properly, but I'm not clear why >> mochijson2 would be coughing at the data part. >> >> --Andrew >> >> On Thu, Jun 23, 2011 at 5:32 AM, Mathias Meyer <math...@basho.com> wrote: >> > Andrew, >> > >> > you're indeed hitting a JSON encoding problem here. BERT is binary data, >> > and won't make the JSON parser happy when trying to deserialize it, before >> > handing it into the map phase. You have two options here, and none of them >> > will involve JavaScript as the MapReduce language. >> > >> > 1.) Use the Protobuff API, use Erlang functions to return the value or >> > object (e.g. riak_mapreduce:map_object_value or >> > riak_kv_mapreduce:map_identity), and then run MapReduce queries with the >> > content type 'application/x-erlang-binary'. However, you're constrained by >> > client libraries here, e.g. Ruby and Python don't support this content type >> > for MapReduce on the Protobuffs interface yet, so you'd either implement >> > something custom, or resort to a client that does, riak-erlang-client comes >> > to mind, though it was proven to be possible using the Java client too, >> > thanks to Russell. See [1] and [2] >> > >> > 2.) Convert the result from BERT into a JSON-parseable structure inside >> > an Erlang map function, before it's returned to the client. >> > >> > The second approach certainly is less restrictive in terms of API usage, >> > but certainly involves some overhead inside of the MapReduce request >> > itself, >> > but is less prone to encoding/decoding issues with JSON. >> > >> > Mathias Meyer >> > Developer Advocate, Basho Technologies >> > >> > [1] >> > http://lists.basho.com/pipermail/riak-users_lists.basho.com/2011-June/004447.html >> > [2] >> > http://lists.basho.com/pipermail/riak-users_lists.basho.com/2011-June/004485.html >> > >> > On Donnerstag, 23. Juni 2011 at 07:59, Andrew Berman wrote: >> > >> >> Hey Ryan, >> >> >> >> Here is the error from the sasl log. It looks like some sort of >> >> encoding error. Any thoughts on how to fix this? I am storing the >> >> data as BERT encoded binary and I set the content-type as >> >> application/octet-stream. >> >> >> >> Thanks for your help! >> >> >> >> Andrew >> >> >> >> ERROR REPORT==== 9-Jun-2011::21:37:05 === >> >> ** Generic server <0.5996.21> terminating >> >> ** Last message in was {batch_dispatch, >> >> {map, >> >> {jsanon,<<"function(value) {return [value];}">>}, >> >> [{struct, >> >> [{<<"bucket">>,<<"user">>}, >> >> {<<"key">>,<<"LikiWUPJSFuxtrhCYpsPfg">>}, >> >> {<<"vclock">>, >> >> >> >> <<"a85hYGBgzGDKBVIsLKaZdzOYEhnzWBmes6Yd58sCAA==">>}, >> >> {<<"values">>, >> >> [{struct, >> >> [{<<"metadata">>, >> >> {struct, >> >> [{<<"X-Riak-VTag">>, >> >> <<"1KnL9Dlma9Yg4eMhRuhwtx">>}, >> >> {<<"X-Riak-Last-Modified">>, >> >> <<"Fri, 10 Jun 2011 03:05:11 GMT">>}]}}, >> >> {<<"data">>, >> >> >> >> <<131,108,0,0,0,18,104,2,100,0,6,114,...>>}]}]}]}, >> >> <<"user">>,none]}} >> >> ** When Server state == >> >> {state,<0.143.0>,riak_kv_js_map,#Port<0.92614>,true} >> >> ** Reason for termination == >> >> ** {function_clause,[{js_driver,eval_js, >> >> [#Port<0.92614>,{error,bad_encoding},5000]}, >> >> {riak_kv_js_vm,invoke_js,2}, >> >> {riak_kv_js_vm,define_invoke_anon_js,3}, >> >> {riak_kv_js_vm,handle_call,3}, >> >> {gen_server,handle_msg,5}, >> >> {proc_lib,init_p_do_apply,3}]} >> >> >> >> =CRASH REPORT==== 9-Jun-2011::21:37:05 === >> >> crasher: >> >> initial call: riak_kv_js_vm:init/1 >> >> pid: <0.5996.21> >> >> registered_name: [] >> >> exception exit: >> >> >> >> {function_clause,[{js_driver,eval_js,[#Port<0.92614>,{error,bad_encoding},5000]},{riak_kv_js_vm,invoke_js,2},{riak_kv_js_vm,define_invoke_anon_js,3},{riak_kv_js_vm,handle_call,3},{gen_server,handle_msg,5},{proc_lib,init_p_do_apply,3}]} >> >> in function gen_server:terminate/6 >> >> in call from proc_lib:init_p_do_apply/3 >> >> ancestors: [riak_kv_js_sup,riak_kv_sup,<0.128.0>] >> >> messages: [] >> >> links: [<0.142.0>,<0.6009.21>] >> >> dictionary: [] >> >> trap_exit: false >> >> status: running >> >> heap_size: 4181 >> >> stack_size: 24 >> >> reductions: 2586 >> >> neighbours: >> >> neighbour: >> >> [{pid,<0.6009.21>},{registered_name,[]},{initial_call,{riak_kv_mapper,init,[Argument__1]}},{current_function,{gen,do_call,4}},{ancestors,[riak_kv_mapper_sup,riak_kv_sup,<0.128.0>]},{messages,[]},{links,[<0.5996.21>,<12337.6227.21>,<0.162.0>]},{dictionary,[]},{trap_exit,false},{status,waiting},{heap_size,987},{stack_size,53},{reductions,1043}] >> >> =SUPERVISOR REPORT==== 9-Jun-2011::21:37:05 === >> >> Supervisor: {local,riak_kv_js_sup} >> >> Context: child_terminated >> >> Reason: >> >> >> >> {function_clause,[{js_driver,eval_js,[#Port<0.92614>,{error,bad_encoding},5000]},{riak_kv_js_vm,invoke_js,2},{riak_kv_js_vm,define_invoke_anon_js,3},{riak_kv_js_vm,handle_call,3},{gen_server,handle_msg,5},{proc_lib,init_p_do_apply,3}]} >> >> Offender: >> >> >> >> [{pid,<0.5996.21>},{name,undefined},{mfargs,{riak_kv_js_vm,start_link,undefined}},{restart_type,temporary},{shutdown,2000},{child_type,worker}] >> >> >> >> On Wed, Jun 22, 2011 at 6:10 PM, Ryan Zezeski <rzeze...@basho.com >> >> (mailto:rzeze...@basho.com)> wrote: >> >> > >> >> > Andrew, >> >> > Maybe you could elaborate on the error? I tested this against master >> >> > (commit below) just now with success. >> >> > 2b1a474f836d962fa035f48c05452e22fc6c2193 Change dependency to allow >> >> > for R14B03 as well as R14B02 >> >> > -Ryan >> >> > On Wed, Jun 22, 2011 at 7:03 PM, Andrew Berman <rexx...@gmail.com >> >> > (mailto:rexx...@gmail.com)> wrote: >> >> > > >> >> > > Hello, >> >> > > I'm having issues link walking using the Map Reduce link function. >> >> > > I am using HEAD from Git, so it's possible that's the issue, but here >> >> > > is >> >> > > what is happening. >> >> > > I've got two buckets, user and user_email where user_email contains >> >> > > a link to the user. >> >> > > When I run this: >> >> > > { >> >> > > "inputs": [ >> >> > > [ >> >> > > "user_email", >> >> > > "myem...@email.com (mailto:myem...@email.com)" >> >> > > ] >> >> > > ], >> >> > > "query": [ >> >> > > { >> >> > > "link": { >> >> > > "bucket": "user", >> >> > > "tag": "user" >> >> > > } >> >> > > } >> >> > > ] >> >> > > } >> >> > > I only get [["user","LikiWUPJSFuxtrhCYpsPfg","user"]] returned. The >> >> > > second I add a map function, even the simplest one (function(v) { [v] >> >> > > } I >> >> > > get a "map_reduce error": >> >> > > { >> >> > > "inputs": [ >> >> > > [ >> >> > > "user_email", >> >> > > "myem...@email.com (mailto:myem...@email.com)" >> >> > > ] >> >> > > ], >> >> > > "query": [ >> >> > > { >> >> > > "link": {"bucket":"user", "tag":"user"} >> >> > > } >> >> > > ,{ >> >> > > "map": { >> >> > > "language": "javascript", >> >> > > "source": "function(v) { return[v]; }" >> >> > > } >> >> > > } >> >> > > ] >> >> > > } >> >> > > Is this functionality broken? I am following what it says on the >> >> > > Wiki for the MapRed version of link walking. When I use HTTP link >> >> > > walking, >> >> > > it works correctly. >> >> > > Thanks, >> >> > > Andrew >> >> > > _______________________________________________ >> >> > > riak-users mailing list >> >> > > riak-users@lists.basho.com (mailto: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 (mailto: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 > > > > -- > Sean Cribbs <s...@basho.com> > Developer Advocate > Basho Technologies, Inc. > http://www.basho.com/ > _______________________________________________ riak-users mailing list riak-users@lists.basho.com http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com