Hi Doug, 

That's correct.  Do you know the names of all of your keys?  If so, it should 
be pretty trivial to write a script to read the values from the data store, 
decode, and re-encode using your favorite JSON library.

- Chris 

-- 
Christopher Meiklejohn
Software Engineer
Basho Technologies, Inc.



On Thursday, August 29, 2013 at 3:06 AM, Doug Read wrote:

> Hi Crhis,
> 
> I just say this, yeah my testing also seems to point to spidermonkey as well.
> As far as your suggestion, decode and re-encode, I am not sure I understand 
> what you mean. Can you provide an example or elaborate? Is this changing the 
> key values?
> 
> thanks
> doug
> 
> 
> 
> On Tue, Aug 20, 2013 at 4:07 PM, Chris Meiklejohn <cmeiklej...@basho.com 
> (mailto:cmeiklej...@basho.com)> wrote:
> > Hi Doug,
> > 
> > I've spent a good portion of the day tracing the execution of the Erlang 
> > port driver with gdb and have definitely determined that Spidermonkey is 
> > returning an empty response from the function call with a success value 
> > from the execution. My hunch is that this is definitely related to the 
> > encoding of the object causing Spidermonkey to fail to execute correctly 
> > (especially based on our previous testing). 
> > 
> > As it's a pretty big undertaking to upgrade erlang_js to a newer version of 
> > Spidermonkey (or Jagermonkey or V8), I'd definitely recommend writing a 
> > script to enumerate your keys, decode and re-encode your objects as we've 
> > already shown that that solution works. 
> > 
> > - Chris
> > 
> > 
> > On Tue, Aug 20, 2013 at 11:27 AM, Chris Meiklejohn <cmeiklej...@basho.com 
> > (mailto:cmeiklej...@basho.com)> wrote:
> > > Hi Doug,
> > > 
> > > While this is certainly possible, the JSON that's being used as the 
> > > function argument does decode both with Spidermonkey (calling into the 
> > > JSON decode function with that object directly), and with mochijson2. 
> > > It's a combination of the function application with that object as the 
> > > functions argument. 
> > > 
> > > - Chris
> > > 
> > > 
> > > On Mon, Aug 19, 2013 at 11:23 PM, Doug Read <doug.r...@qnary.com 
> > > (mailto:doug.r...@qnary.com)> wrote:
> > > > I noticed the value in some of the json fields have the single quotes 
> > > > and double quotes, is it possible they aren't being correctly escaped 
> > > > when being passed to spidermonkey? 
> > > > 
> > > > 
> > > > On Mon, Aug 19, 2013 at 5:33 PM, Chris Meiklejohn 
> > > > <cmeiklej...@basho.com (mailto:cmeiklej...@basho.com)> wrote:
> > > > > Hello Doug,
> > > > > 
> > > > > I've verified that the problem is not related to that particular 
> > > > > parsing function, as the following JavaScript MapReduce code will 
> > > > > trigger the exception:
> > > > > 
> > > > > { "map": {"language": "javascript", "source": "function(value, 
> > > > > keyData, arg) { return [value]; }" }
> > > > > 
> > > > > Specifically, what's happening inside of the erlang_js module is this 
> > > > > function is being turned into an anonymous immediately invoking 
> > > > > function expression like such: 
> > > > > 
> > > > > (function(value, keyData, arg) { return [value]; })(RIAK_OBJECT_HERE)
> > > > > 
> > > > > This string is then marshalled and called through the Erlang port 
> > > > > driver to Spidermonkey. The response returned is the following: 
> > > > > 
> > > > > {ok, <<>>}
> > > > > 
> > > > > This then causes the js_mochijson2 decode to fail, because it's not 
> > > > > defined over empty binary objects.
> > > > > 
> > > > > I've verified that this is only the behavior with the object you 
> > > > > provided, which leads me to believe that something inside of 
> > > > > Spidermonkey is blowing up, which is triggering the empty binary 
> > > > > response. 
> > > > > 
> > > > > I'm going to continue tracking it down, however, I'd advise moving 
> > > > > forward to switch to Erlang-based MapReduce jobs, which perform much 
> > > > > better, as they don't introduce overhead for 
> > > > > serialization/deserialization and don't require the use of the 
> > > > > JavaScript virtual machine. 
> > > > > 
> > > > > - Chris
> > > > > 
> > > > > 
> > > > > 
> > > > > On Mon, Aug 19, 2013 at 4:14 PM, Chris Meiklejohn 
> > > > > <cmeiklej...@basho.com (mailto:cmeiklej...@basho.com)> wrote:
> > > > > > Hi Doug,
> > > > > > 
> > > > > > Can you shoot over the multi get job you are using?
> > > > > > 
> > > > > > - Chris
> > > > > > 
> > > > > > 
> > > > > > On Mon, Aug 19, 2013 at 4:11 PM, Doug Read <doug.r...@qnary.com 
> > > > > > (mailto:doug.r...@qnary.com)> wrote:
> > > > > > > Hi Chris,
> > > > > > > 
> > > > > > > I appreciate the help. Please let me know if I can help in 
> > > > > > > anyway. For now I just switched to a "multi" get. 
> > > > > > > 
> > > > > > > thanks
> > > > > > > doug
> > > > > > > 
> > > > > > > 
> > > > > > > 
> > > > > > > On Mon, Aug 19, 2013 at 4:09 PM, Chris Meiklejohn 
> > > > > > > <cmeiklej...@basho.com (mailto:cmeiklej...@basho.com)> wrote:
> > > > > > > > Hi Doug,
> > > > > > > > 
> > > > > > > > After loading your backup, I can trigger the crash through the 
> > > > > > > > JavaScript map/reduce job. However, if I do the following: 
> > > > > > > > 
> > > > > > > > {ok, Client} = riak:local_client().
> > > > > > > > {ok, O} = Client:get(<<"BUCKET">>, <<"KEY">>).
> > > > > > > > 
> > > > > > > > both of these calls succeed:
> > > > > > > > 
> > > > > > > > js_mochijson2:decode(riak_object:get_values(O)).
> > > > > > > > mochijson2:decode(riak_object:get_values(O)).
> > > > > > > > 
> > > > > > > > I'm continuing to track down where the crash is occurring, but 
> > > > > > > > it appears to be something related to erlang_js.
> > > > > > > > 
> > > > > > > > - Chris
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > On Fri, Aug 16, 2013 at 10:45 AM, Doug Read 
> > > > > > > > <doug.r...@qnary.com (mailto:doug.r...@qnary.com)> wrote:
> > > > > > > > > So you are right about the characters in the json, I remove 
> > > > > > > > > most of the key, just leaving some valid json with the 
> > > > > > > > > special characters, it produces the same error. 
> > > > > > > > > 
> > > > > > > > > A simple node program which reads the json from file and does 
> > > > > > > > > JSON.parse; this succeeds. 
> > > > > > > > > 
> > > > > > > > > var fs = require("fs");
> > > > > > > > > 
> > > > > > > > > fs.readFile("/tmp/bucket_export/s/e/a/searches_bad.json", 
> > > > > > > > > function(err, data) {
> > > > > > > > > console.log(data);
> > > > > > > > > var json = JSON.parse(data);
> > > > > > > > > console.log(json);
> > > > > > > > > });
> > > > > > > > > 
> > > > > > > > > 
> > > > > > > > > So the javascript VM or something before/after it is having 
> > > > > > > > > trouble parsing it but i am not sure how to debug from here.
> > > > > > > > > 
> > > > > > > > > 
> > > > > > > > > 
> > > > > > > > > On Fri, Aug 16, 2013 at 1:58 AM, Christopher Meiklejohn 
> > > > > > > > > <cmeiklej...@basho.com (mailto:cmeiklej...@basho.com)> wrote:
> > > > > > > > > > Hi Doug,
> > > > > > > > > > 
> > > > > > > > > > Just going through your email again; I just noticed that 
> > > > > > > > > > there is a typo in the bucket name between those two 
> > > > > > > > > > commands:
> > > > > > > > > > 
> > > > > > > > > > JavaScript:
> > > > > > > > > > 
> > > > > > > > > > curl -XPOST http://localhost:8098/mapred -H 'Content-Type: 
> > > > > > > > > > application/json' -d '{"inputs":[ [ 
> > > > > > > > > > "aaaaaaaa-4536-9048-87ef2e48ddda", 
> > > > > > > > > > "key_5ad26d0d-4d28-40ca-afcb-1c9895cc5c71" ] ], "query":[ { 
> > > > > > > > > > "map": { "name": "Riak.mapValuesJson", "language": 
> > > > > > > > > > "javascript" } }, { "reduce": { "name": 
> > > > > > > > > > "Riak.filterNotFound", "language": "javascript" } } ] }'
> > > > > > > > > > 
> > > > > > > > > > Erlang:
> > > > > > > > > > 
> > > > > > > > > > curl -XPOST http://localhost:8098/mapred -H 'Content-Type: 
> > > > > > > > > > application/json' -d '{"inputs":[ [ 
> > > > > > > > > > "aaaaaaaa-50d7-4536-9048-87ef2e48ddda", 
> > > > > > > > > > "key_5ad26d0d-4d28-40ca-afcb-1c9895cc5c71" ] ], 
> > > > > > > > > > "query":[{"map":{"language":"erlang","module":"riak_kv_mapreduce","function":"map_object_value"}}
> > > > > > > > > >  ] }'
> > > > > > > > > > 
> > > > > > > > > > Specifically, 'aaaaaaaa-4536-9048-87ef2e48ddda' in the 
> > > > > > > > > > failed JavaScript command vs 
> > > > > > > > > > 'aaaaaaaa-50d7-4536-9048-87ef2e48ddda' in the successful 
> > > > > > > > > > Erlang command.
> > > > > > > > > > 
> > > > > > > > > > I've verified this is triggering not_founds in the dump you 
> > > > > > > > > > supplied.
> > > > > > > > > > 
> > > > > > > > > > - Chris
> > > > > > > > > > 
> > > > > > > > > > --
> > > > > > > > > > Christopher Meiklejohn
> > > > > > > > > > Software Engineer
> > > > > > > > > > Basho Technologies, Inc.
> > > > > > > > > > 
> > > > > > > > > > 
> > > > > > > > > > 
> > > > > > > > > > On Friday, August 16, 2013 at 1:36 AM, Doug Read wrote:
> > > > > > > > > > 
> > > > > > > > > > > No problem.
> > > > > > > > > > > 
> > > > > > > > > > > Riak 1.3.1
> > > > > > > > > > > Have reproduced the error on 1.3.1 Mac osx and 1.4.1 on 
> > > > > > > > > > > Ubuntu. I am on my phone now I'll get the build and 
> > > > > > > > > > > package versions.
> > > > > > > > > > > 
> > > > > > > > > > > That is the erlang mapreduce, that has always worked it 
> > > > > > > > > > > is the javascript version that fails. The one I 
> > > > > > > > > > > originally posted but basically any javascript mapreduce 
> > > > > > > > > > > which takes that bucket key as input.
> > > > > > > > > > > 
> > > > > > > > > > > On Friday, August 16, 2013, Christopher Meiklejohn wrote:
> > > > > > > > > > > > Hi Doug,
> > > > > > > > > > > > 
> > > > > > > > > > > > First, my apologies. I confused two email responses I 
> > > > > > > > > > > > was writing, and that's why my previous e-mail was a 
> > > > > > > > > > > > bit out of context.
> > > > > > > > > > > > 
> > > > > > > > > > > > I've loaded your backup file into a locally built 
> > > > > > > > > > > > cluster here off of the Riak 1.2 branch, but I'm still 
> > > > > > > > > > > > unable to reproduce the issue using the following 
> > > > > > > > > > > > map/reduce command:
> > > > > > > > > > > > 
> > > > > > > > > > > > curl -XPOST http://localhost:8098/mapred -H 
> > > > > > > > > > > > 'Content-Type: application/json' -d '{"inputs":[ [ 
> > > > > > > > > > > > "aaaaaaaa-50d7-4536-9048-87ef2e48ddda", 
> > > > > > > > > > > > "key_5ad26d0d-4d28-40ca-afcb-1c9895cc5c71" ] ], 
> > > > > > > > > > > > "query":[{"map":{"language":"erlang","module":"riak_kv_mapreduce","function":"map_object_value"}}
> > > > > > > > > > > >  ] }'
> > > > > > > > > > > > 
> > > > > > > > > > > > Can you please provide which operating system, build, 
> > > > > > > > > > > > and package version of Riak you are running?
> > > > > > > > > > > > 
> > > > > > > > > > > > - Chris
> > > > > > > > > > > > 
> > > > > > > > > > > > --
> > > > > > > > > > > > Christopher Meiklejohn
> > > > > > > > > > > > Software Engineer
> > > > > > > > > > > > Basho Technologies, Inc.
> > > > > > > > > > > > 
> > > > > > > > > > > > 
> > > > > > > > > > > > 
> > > > > > > > > > > > On Friday, August 16, 2013 at 1:23 AM, Christopher 
> > > > > > > > > > > > Meiklejohn wrote:
> > > > > > > > > > > > 
> > > > > > > > > > > > > Hi Doug,
> > > > > > > > > > > > > 
> > > > > > > > > > > > > Can you provide more information as to how you build 
> > > > > > > > > > > > > the image with Vagrant so I can try to reproduce it? 
> > > > > > > > > > > > > The configuration alone isn't going to be enough as 
> > > > > > > > > > > > > this appears to be a systems related issue.
> > > > > > > > > > > > > 
> > > > > > > > > > > > > - Chris
> > > > > > > > > > > > > 
> > > > > > > > > > > > > --
> > > > > > > > > > > > > Christopher Meiklejohn
> > > > > > > > > > > > > Software Engineer
> > > > > > > > > > > > > Basho Technologies, Inc.
> > > > > > > > > > > > > 
> > > > > > > > > > > > > 
> > > > > > > > > > > > > 
> > > > > > > > > > > > > On Friday, August 16, 2013 at 1:20 AM, Doug Read 
> > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > 
> > > > > > > > > > > > > > Hi Chris,
> > > > > > > > > > > > > > 
> > > > > > > > > > > > > > I made a riak-admin backup of the key which 
> > > > > > > > > > > > > > reproduces the issue. I was wondering if you could 
> > > > > > > > > > > > > > give me some direction of how to debug the issue.
> > > > > > > > > > > > > > 
> > > > > > > > > > > > > > thanks
> > > > > > > > > > > > > > doug
> > > > > > > > > > > > > > 
> > > > > > > > > > > > > > 
> > > > > > > > > > > > > > 
> > > > > > > > > > > > > > On Thu, Aug 15, 2013 at 3:41 PM, Chris Meiklejohn 
> > > > > > > > > > > > > > <cmeiklej...@basho.com 
> > > > > > > > > > > > > > (mailto:cmeiklej...@basho.com) 
> > > > > > > > > > > > > > (mailto:cmeiklej...@basho.com)> wrote:
> > > > > > > > > > > > > > > The best guess I have at this point is probably 
> > > > > > > > > > > > > > > something related to character encoding, but 
> > > > > > > > > > > > > > > without a reproduction case, I'm not able to 
> > > > > > > > > > > > > > > debug it any further.
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > Good luck with the upgrade tonight!
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > - Chris
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > On Thu, Aug 15, 2013 at 3:39 PM, Doug Read 
> > > > > > > > > > > > > > > <doug.r...@qnary.com (mailto:doug.r...@qnary.com) 
> > > > > > > > > > > > > > > (mailto:doug.r...@qnary.com)> wrote:
> > > > > > > > > > > > > > > > I redirected the output of curl into a file on 
> > > > > > > > > > > > > > > > an ubuntu box. I am upgrading the cluster to 
> > > > > > > > > > > > > > > > 1.4.1 tonight. To your point I PUT the value 
> > > > > > > > > > > > > > > > into the key locally (3 node cluster) and 
> > > > > > > > > > > > > > > > couldn't reproduce either. Also i am turning on 
> > > > > > > > > > > > > > > > the java vm logging.
> > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > > On Thu, Aug 15, 2013 at 3:33 PM, Chris 
> > > > > > > > > > > > > > > > Meiklejohn <cmeiklej...@basho.com 
> > > > > > > > > > > > > > > > (mailto:cmeiklej...@basho.com) 
> > > > > > > > > > > > > > > > (mailto:cmeiklej...@basho.com)> wrote:
> > > > > > > > > > > > > > > > > Hi Doug,
> > > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > > > I've configured a Riak 1.2 cluster, and run 
> > > > > > > > > > > > > > > > > the aforementioned map-reduce job in Erlang 
> > > > > > > > > > > > > > > > > and I can't trigger the crash. I'm getting 
> > > > > > > > > > > > > > > > > the expected results of the map/reduce job. 
> > > > > > > > > > > > > > > > > How did you send me the object that you 
> > > > > > > > > > > > > > > > > provided off-list?
> > > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > > > - Chris
> > > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > > > On Thu, Aug 15, 2013 at 12:36 PM, Chris 
> > > > > > > > > > > > > > > > > Meiklejohn <cmeiklej...@basho.com 
> > > > > > > > > > > > > > > > > (mailto:cmeiklej...@basho.com) 
> > > > > > > > > > > > > > > > > (mailto:cmeiklej...@basho.com)> wrote:
> > > > > > > > > > > > > > > > > > Hi Doug,
> > > > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > > > > Can you provide a sample of the JSON that 
> > > > > > > > > > > > > > > > > > you're storing in these objects? It appears 
> > > > > > > > > > > > > > > > > > that mochijson2's tokenizer is crashing 
> > > > > > > > > > > > > > > > > > because it thinks the JSON is not valid, 
> > > > > > > > > > > > > > > > > > where the Spidermonkey parsing is 
> > > > > > > > > > > > > > > > > > succeeding.
> > > > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > > > > - Chris
> > > > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > > > > On Wed, Aug 14, 2013 at 10:58 AM, Doug Read 
> > > > > > > > > > > > > > > > > > <doug.r...@qnary.com 
> > > > > > > > > > > > > > > > > > (mailto:doug.r...@qnary.com) 
> > > > > > > > > > > > > > > > > > (mailto:doug.r...@qnary.com)> wrote:
> > > > > > > > > > > > > > > > > > > The following MapReduce job fails using 
> > > > > > > > > > > > > > > > > > > javascript but succeeds when using erlang.
> > > > > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > > > > > Riak 1.2.0 2012-0806 Debian x86_64
> > > > > > > > > > > > > > > > > > > 3 nodes, n_val=3
> > > > > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > > > > > Riak diag gives large list of
> > > > > > > > > > > > > > > > > > > [warning] The following preflists do not 
> > > > > > > > > > > > > > > > > > > satisfy the n_val:
> > > > > > > > > > > > > > > > > > > Not really sure what this means but 
> > > > > > > > > > > > > > > > > > > thought i would share.
> > > > > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > > > > > JAVASCRIPT:
> > > > > > > > > > > > > > > > > > > curl -XPOST http://localhost:8098/mapred 
> > > > > > > > > > > > > > > > > > > -H 'Content-Type: application/json' -d 
> > > > > > > > > > > > > > > > > > > '{"inputs":[ [ 
> > > > > > > > > > > > > > > > > > > "aaaaaaaa-4536-9048-87ef2e48ddda", 
> > > > > > > > > > > > > > > > > > > "key_5ad26d0d-4d28-40ca-afcb-1c9895cc5c71"
> > > > > > > > > > > > > > > > > > >  ] ], "query":[ { "map": { "name": 
> > > > > > > > > > > > > > > > > > > "Riak.mapValu
> > > > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > 
> > > > > > > > > > > > > 
> > > > > > > > > > > > 
> > > > > > > > > > > 
> > > > > > > > > > 
> > > > > > > > > 
> > > > > > > > 
> > > > > > > 
> > > > > > 
> > > > > 
> > > > 
> > > 
> > 
> 




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

Reply via email to