Hi Ryan, thanks. In this case I also came up with a workaround: serving those files from disk. Which solved our user problem. I'll try out your code and let you know how it went.
Francisco 2012/1/12 Ryan Zezeski <rzeze...@basho.com>: > Francisco, > > I'm not sure how it happend, but perhaps the file was updated at some point > and the root became a pointer to an empty tree. If you didn't already know > Luwak keeps all old versions of your file around, but it doesn't really have > any APIs for accessing it. Try attaching to the Riak console and run the > following: > > > {ok, C} = riak:local_client(). > {ok, F} = luwak_file:get(C, <<"filename">>). > PrevRoot = hd(luwak_file:get_property(F, ancestors)). > V = riak_object:get_value(F). > V2 = lists:keyreplace(root, 1, V, {root, PrevRoot}). > TempF = riak_object:apply_updates(riak_object:update_value(F, V2)). > Bytes = luwak_io:get_range(C, TempF, 0, Length). % where Length is number of > bytes you want to read > > I also made a gist of the above: https://gist.github.com/1602953 > > If the first ancestor doesn't give you anything then keep moving down the > list. Otherwise, if you do find the data you are looking for let me know > and we'll see if we can't get your file object fixed. > > -Ryan > > On Thu, Jan 12, 2012 at 2:12 PM, francisco treacy > <francisco.tre...@gmail.com> wrote: >> >> Hi Kelly, >> >> Yes, I had removed a node from the cluster and then forced >> read-repair. I think it was you actually help me out a couple of >> months ago with this. >> >> So far we didn't run into any other broken assets, but we need to get >> these up. Ideas? >> >> Thanks, >> >> Francisco >> >> 2012/1/12 Kelly McLaughlin <ke...@basho.com>: >> > Francisco, >> > >> > Is it the case that you have already tried to force read repair on the >> > file chunks and are still seeing these errors? >> > >> > Kelly >> > >> > On Jan 12, 2012, at 10:57 AM, francisco treacy wrote: >> > >> >> Hi, >> >> >> >> One of my users is preparing an exam but can't load an image because >> >> Luwak is serving it broken (i.e. responds with HTTP 200; 0 bytes) >> >> >> >> Visibly caused by a non-existing chunk of that file on that partition. >> >> I would've expected read-repair to kick in and update the value. But >> >> it keeps on serving 0 bytes. >> >> >> >> Why is this happening and how can I fix it? >> >> >> >> Thanks, >> >> >> >> Francisco >> >> >> >> >> >> =CRASH REPORT==== 12-Jan-2012::18:42:29 === >> >> crasher: >> >> initial call: luke_flow:init/1 >> >> pid: <0.16316.2941> >> >> registered_name: [] >> >> exception exit: >> >> >> >> {error,{phase_error,{error,{throw,{function_clause,[{riak_object,get_value,[{error,notfound}]},{luwak_get_stream,-map_fun/0-fun-0-,3},{riak_kv_mapper,run_map,9},{riak_kv_mapper,-do_map/2-fun-0-,9},{lists,foldl,3},{riak_kv_mapper,do_map,2},{gen_fsm,handle_msg,7},{proc_lib,init_p_do_apply,3}]},[{luwak_get_stream,-map_fun/0-fun-0-,3},{riak_kv_mapper,run_map,9},{riak_kv_mapper,-do_map/2-fun-0-,9},{lists,foldl,3},{riak_kv_mapper,do_map,2},{gen_fsm,handle_msg,7},{proc_lib,init_p_do_apply,3}]}}}} >> >> in function gen_fsm:terminate/7 >> >> in call from proc_lib:init_p_do_apply/3 >> >> ancestors: [luke_flow_sup,luke_sup,<0.10483.536>] >> >> messages: [] >> >> links: [<0.10485.536>] >> >> dictionary: [] >> >> trap_exit: true >> >> status: running >> >> heap_size: 610 >> >> stack_size: 24 >> >> reductions: 258 >> >> neighbours: >> >> >> >> =SUPERVISOR REPORT==== 12-Jan-2012::18:42:29 === >> >> Supervisor: {local,luke_flow_sup} >> >> Context: child_terminated >> >> Reason: >> >> >> >> {error,{phase_error,{error,{throw,{function_clause,[{riak_object,get_value,[{error,notfound}]},{luwak_get_stream,-map_fun/0-fun-0-,3},{riak_kv_mapper,run_map,9},{riak_kv_mapper,-do_map/2-fun-0-,9},{lists,foldl,3},{riak_kv_mapper,do_map,2},{gen_fsm,handle_msg,7},{proc_lib,init_p_do_apply,3}]},[{luwak_get_stream,-map_fun/0-fun-0-,3},{riak_kv_mapper,run_map,9},{riak_kv_mapper,-do_map/2-fun-0-,9},{lists,foldl,3},{riak_kv_mapper,do_map,2},{gen_fsm,handle_msg,7},{proc_lib,init_p_do_apply,3}]}}}} >> >> Offender: >> >> >> >> [{pid,<0.16316.2941>},{name,undefined},{mfa,{luke_flow,start_link,[<10351.27714.2432>,18337056,[{riak_kv_map_phase,[],[{erlang,{map,{qfun,#Fun<luwak_get_stream.1.10025879>},{map,{riak_client,ri...@xx.165.253.xx,<<[2,139,139,84]>>},1000000,#Ref<0.0.487.249801>,<0.16313.2941>,0,76134},false}}]}],undefined,66000]}},{restart_type,temporary},{shutdown,brutal_kill},{child_type,worker}] >> >> >> >> _______________________________________________ >> >> 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