Francisco - You have perfect timing. This same question came up yesterday in #riak.
The core of the issue is Riak runs map functions on the node hosting the relevant data. In the case of a 'not found', there is no hosting node -- the data doesn't exist -- so the map function is never invoked for the missing entry. The 'not found' shows up in the reduce phase because reduce phases execute on the node coordinating the entire map/reduce job. Riak converts link walks into map phases which is why broken links also show up as 'not found' responses being passed to your reduce phase. Riak.mapValuesJson contains filtering logic since it could be used in either map OR reduce phases. I'd recommend performing 'not found' filtering in your reduce phases since that'll be the first opportunity you have to deal with the missing data. --Kevin On Jun 15, 2010, at 4:30 AM, francisco treacy wrote: > Hi all, > > I have a document with some broken links (i.e. that point to a > non-existent key), and want to apply a map/reduce there. > > var map = function(v, k, args) { ejsLog("/tmp/mr", "hello from map"); > return [{from: "map"}] } > > db.link({ bucket: "highlights", keep: false }) > .map({source: map}) > .run([["user_chapters", id]])() > > (That is, apply link+map to users_chapters/id) > > Result: > [{"not_found":{"bucket":"highlights","key":"f542e13e0b5cece1f637be384e685667"}}] > > Makes sense because that is true. But why don't I get [{from: "map"}], > and why is nothing logged? > > I presume it is just failing at the link phase, which then outputs no > keys for the following phases. The "not found" objects should be get > rid of at a node level, so I don't think they belong to a reduce > phase. Or is that the case? > > (FWIW i got inspiration from Riak.mapValuesJson which seems to deal > with not_founds, but I never actually seem to reach the map phase). > > What is the recommended approach to gracefully handle broken links? It > should be fairly easy to exclude not found results from the resulting > map/reduce array. > > 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