| commit 702: | e1357f00129f |
| parent 701: | d9c0fe9d2760 |
| branch: | default |
| tags: | riak-0.7.1 |
fix get_merkle in vnode
6 months ago
Changed (Δ570 bytes):
raw changeset »
apps/riak/src/riak_vnode.erl (14 lines added, 0 lines removed)
Up to file-list apps/riak/src/riak_vnode.erl:
| … | … | @@ -312,6 +312,17 @@ syntactic_put_merge(Mod, ModState, BKey, |
312 |
312 |
end. |
313 |
313 |
|
314 |
314 |
%% @private |
315 |
get_merkle(_State=#state{mod=Mod,modstate=ModState}) -> |
|
316 |
KeyList = Mod:list(ModState), |
|
317 |
Merk0 = merkerl:build_tree([]), |
|
318 |
get_merk(Mod,ModState,KeyList,Merk0). |
|
319 |
%% @private |
|
320 |
get_merk(_Mod,_ModState,[],Merk) -> Merk; |
|
321 |
get_merk(Mod,ModState,[BKey|KeyList],Merk) -> |
|
322 |
V = Mod:get(ModState,BKey), % normally, V = {ok,BinObj} |
|
323 |
get_merk(Mod,ModState,KeyList,merkerl:insert({BKey,erlang:phash2(V)},Merk)). |
|
324 |
||
325 |
%% @private |
|
315 |
326 |
get_vclocks(KeyList,_State=#state{mod=Mod,modstate=ModState}) -> |
316 |
327 |
[{BKey, get_vclock(BKey,Mod,ModState)} || BKey <- KeyList]. |
317 |
328 |
%% @private |
| … | … | @@ -329,6 +340,9 @@ do_fold(Fun, Acc0, _State=#state{mod=Mod |
329 |
340 |
code_change(_OldVsn, StateName, State, _Extra) -> {ok, StateName, State}. |
330 |
341 |
|
331 |
342 |
%% @private |
343 |
handle_event({get_merkle, From}, StateName, State) -> |
|
344 |
gen_server2:reply(From, get_merkle(State)), |
|
345 |
{next_state, StateName, State, ?TIMEOUT}; |
|
332 |
346 |
handle_event({get_vclocks, From, KeyList}, StateName, State) -> |
333 |
347 |
gen_server2:reply(From, get_vclocks(KeyList, State)), |
334 |
348 |
{next_state, StateName, State, ?TIMEOUT}; |
