Skip to content

Commit

Permalink
change metadata manager/hashtree to use infinity timeouts
Browse files Browse the repository at this point in the history
  • Loading branch information
jrwest committed Sep 22, 2013
1 parent 27292c3 commit b5efcc5
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 15 deletions.
14 changes: 7 additions & 7 deletions src/riak_core_metadata_hashtree.erl
Original file line number Diff line number Diff line change
Expand Up @@ -87,25 +87,25 @@ insert(PKey, Hash) ->
%% inserted into the tree if the key is not already present.
-spec insert(metadata_pkey(), binary(), boolean()) -> ok.
insert(PKey, Hash, IfMissing) ->
gen_server:call(?SERVER, {insert, PKey, Hash, IfMissing}).
gen_server:call(?SERVER, {insert, PKey, Hash, IfMissing}, infinity).

%% @doc Return the hash for the given prefix or full-prefix
-spec prefix_hash(metadata_prefix() | binary() | atom()) -> undefined | binary().
prefix_hash(Prefix) ->
gen_server:call(?SERVER, {prefix_hash, Prefix}).
gen_server:call(?SERVER, {prefix_hash, Prefix}, infinity).

%% @doc Return the bucket for a node in the tree managed by this
%% process running on `Node'.
-spec get_bucket(node(), hashtree_tree:tree_node(),
non_neg_integer(), non_neg_integer()) -> ordict:ordict().
get_bucket(Node, Prefixes, Level, Bucket) ->
gen_server:call({?SERVER, Node}, {get_bucket, Prefixes, Level, Bucket}).
gen_server:call({?SERVER, Node}, {get_bucket, Prefixes, Level, Bucket}, infinity).

%% @doc Return the key hashes for a node in the tree managed by this
%% process running on `Node'.
-spec key_hashes(node(), hashtree_tree:tree_node(), non_neg_integer()) -> orddict:orddict().
key_hashes(Node, Prefixes, Segment) ->
gen_server:call({?SERVER, Node}, {key_hashes, Prefixes, Segment}).
gen_server:call({?SERVER, Node}, {key_hashes, Prefixes, Segment}, infinity).

%% @doc Locks the tree on this node for updating on behalf of the
%% calling process. {@see lock/2}
Expand All @@ -126,7 +126,7 @@ lock(Node) ->
%% aqcuiring the lock succeeds and `ok' is returned.
-spec lock(node(), pid()) -> ok | not_built | locked.
lock(Node, Pid) ->
gen_server:call({?SERVER, Node}, {lock, Pid}).
gen_server:call({?SERVER, Node}, {lock, Pid}, infinity).

%% @doc Updates the tree on this node. {@see update/1}.
-spec update() -> ok | not_locked | not_built | ongoing_update.
Expand All @@ -144,7 +144,7 @@ update() ->
%% the process that manages the tree (e.g. future inserts).
-spec update(node()) -> ok | not_locked | not_built | ongoing_update.
update(Node) ->
gen_server:call({?SERVER, Node}, update).
gen_server:call({?SERVER, Node}, update, infinity).

%% @doc Compare the local tree managed by this process with the remote
%% tree also managed by a metadata hashtree process. `RemoteFun' is
Expand All @@ -158,7 +158,7 @@ update(Node) ->
%% more details on `RemoteFun', `HandlerFun' and `HandlerAcc'.
-spec compare(hashtree_tree:remote_fun(), hashtree_tree:handler_fun(X), X) -> X.
compare(RemoteFun, HandlerFun, HandlerAcc) ->
gen_server:call(?SERVER, {compare, RemoteFun, HandlerFun, HandlerAcc}).
gen_server:call(?SERVER, {compare, RemoteFun, HandlerFun, HandlerAcc}, infinity).

%%%===================================================================
%%% gen_server callbacks
Expand Down
16 changes: 8 additions & 8 deletions src/riak_core_metadata_manager.erl
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ get({{Prefix, SubPrefix}, _Key}=PKey) when (is_binary(Prefix) orelse is_atom(Pre
get(Node, {{Prefix, SubPrefix}, _Key}=PKey)
when (is_binary(Prefix) orelse is_atom(Prefix)) andalso
(is_binary(SubPrefix) orelse is_atom(SubPrefix)) ->
gen_server:call({?SERVER, Node}, {get, PKey}).
gen_server:call({?SERVER, Node}, {get, PKey}, infinity).


%% @doc Returns a full-prefix iterator: an iterator for all full-prefixes that have keys stored under them
Expand Down Expand Up @@ -179,16 +179,16 @@ remote_iterator(Node) ->
%% When done with the iterator, iterator_close/1 must be called
-spec remote_iterator(node(), metadata_prefix() | binary() | atom()) -> remote_iterator().
remote_iterator(Node, Prefix) when is_atom(Prefix) or is_binary(Prefix) ->
Ref = gen_server:call({?SERVER, Node}, {remote_iterator, self(), undefined, Prefix}),
Ref = gen_server:call({?SERVER, Node}, {remote_iterator, self(), undefined, Prefix}, infinity),
#remote_iterator{ref=Ref,prefix=Prefix,node=Node};
remote_iterator(Node, FullPrefix) when is_tuple(FullPrefix) ->
Ref = gen_server:call({?SERVER, Node}, {remote_iterator, self(), FullPrefix, undefined}),
Ref = gen_server:call({?SERVER, Node}, {remote_iterator, self(), FullPrefix, undefined}, infinity),
#remote_iterator{ref=Ref,prefix=FullPrefix,node=Node}.

%% @doc advance the iterator by one key, full-prefix or sub-prefix
-spec iterate(metadata_iterator() | remote_iterator()) -> metadata_iterator() | remote_iterator().
iterate(It=#remote_iterator{ref=Ref,node=Node}) ->
gen_server:call({?SERVER, Node}, {iterate, Ref}),
gen_server:call({?SERVER, Node}, {iterate, Ref}, infinity),
It;
iterate(Iterator) ->
next_iterator(Iterator).
Expand All @@ -207,20 +207,20 @@ iterator_prefix(#metadata_iterator{prefix=Prefix}) -> Prefix.
{metadata_key(), metadata_object()} |
metadata_prefix() | binary() | atom().
iterator_value(#remote_iterator{ref=Ref,node=Node}) ->
gen_server:call({?SERVER, Node}, {iterator_value, Ref});
gen_server:call({?SERVER, Node}, {iterator_value, Ref}, infinity);
iterator_value(#metadata_iterator{prefix=undefined,match=undefined,pos=Pos}) -> Pos;
iterator_value(#metadata_iterator{obj=Obj}) -> Obj.

%% @doc returns true if there are no more keys or prefixes to iterate over
-spec iterator_done(metadata_iterator() | remote_iterator()) -> boolean().
iterator_done(#remote_iterator{ref=Ref,node=Node}) ->
gen_server:call({?SERVER, Node}, {iterator_done, Ref});
gen_server:call({?SERVER, Node}, {iterator_done, Ref}, infinity);
iterator_done(#metadata_iterator{done=Done}) -> Done.

%% @doc Closes the iterator. This function must be called on all open iterators
-spec iterator_close(metadata_iterator() | remote_iterator()) -> ok.
iterator_close(#remote_iterator{ref=Ref,node=Node}) ->
gen_server:call({?SERVER, Node}, {iterator_close, Ref});
gen_server:call({?SERVER, Node}, {iterator_close, Ref}, infinity);
iterator_close(#metadata_iterator{prefix=undefined,match=undefined,tab=Tab}) ->
ets:safe_fixtable(Tab, false),
ok;
Expand All @@ -242,7 +242,7 @@ put({{Prefix, SubPrefix}, _Key}=PKey, Context, ValueOrFun)
%% @doc same as merge/2 but merges the object on `Node'
-spec merge(node(), {metadata_pkey(), metadata_context()}, metadata_object()) -> boolean().
merge(Node, {PKey, _Context}, Obj) ->
gen_server:call({?SERVER, Node}, {merge, PKey, Obj}).
gen_server:call({?SERVER, Node}, {merge, PKey, Obj}, infinity).

%%%===================================================================
%%% riak_core_broadcast_handler callbacks
Expand Down

0 comments on commit b5efcc5

Please sign in to comment.