Thanks for the response. To handle not founds and tombstones I need this in
every map function?

map_something({error, notfound}, _, _) ->
    [];
map_something(RiakObj, _, _) ->
    Metadata = riak_object:get_metadata(RiakObj),
    case dict:is_key(<<"X-Riak-Deleted">>, Metadata) of
        true ->
            []; % I have a tombstone
        false ->
            [ok] % I have a valid item
    end.

Is there a better or built-in way to do this filtering?

--
Jeremy


On Wed, Mar 6, 2013 at 4:08 PM, John Daily <jda...@basho.com> wrote:

> I'm sorry this went unanswered, Jeremy.  Thanks for the follow up.
>
> Your code needs to be able to handle notfound errors and tombstones[1]
> regardless of ownership handoff. The coverage for the 2i or listkeys input
> will be calculated up front, with the work distributed to a node where the
> key is expected to be found, but it's always possible that the node
> selected may not have the data you want due to network or system errors
> that haven't yet healed.
>
> Both the notfound and the fitting error in the logs (which is benign, and
> related to the notfound problem) should be less common under Riak 1.3,
> although ownership handoff will still exacerbate the problem.
>
> [1] https://github.com/basho/riak_kv/issues/358
>
> -John Daily
> Technical Evangelist
> jda...@basho.com
>
>
> On Mar 6, 2013, at 3:14 PM, Jeremy Raymond <jeraym...@gmail.com> wrote:
>
> So I should expect {error, notfound} inputs to map jobs while ownership
> handoff is in progress? Are the not found items actually unavailable during
> handoff or is this just not found on the old node, but will be picked up by
> the new node during the same mapreduce job?
>
> --
> Jeremy
>
>
> On Thu, Feb 28, 2013 at 11:28 AM, Jeremy Raymond <jeraym...@gmail.com>wrote:
>
>> Yesterday I added a new node to my cluster. During the time when
>> ownership handoff was happening (several hours of work) mapreduce map
>> functions were receiving {error, notfound} as inputs. My Erlang mapred
>> functions weren't designed to handle this. They hadn't encountered this
>> before during normal operation. After the ownership handoff process
>> completed the {error, notfound} inputs have stopped.
>>
>> Any explanations for the {error, notfound} inputs during ownership
>> handoff? Is this because a node is attempting to process an object now
>> moved to another node? If this is the case would the notfound object be
>> found on the other node in the same mapreduce job (i.e. still visible to
>> the overall mapred process)? Should I assume {error, notfound} inputs for
>> all mapred jobs as a valid possible input and always handle it?
>>
>> I've also accumulated about 50MB of "Pipe worker startup failed:fitting
>> was gone before startup" on each node during the ownership_transfer
>> process. These messages are benign?
>>
>> Thanks a lot.
>>
>> --
>> Jeremy
>>
>
> _______________________________________________
> 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
>
>
_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to