Use an overall infinite timeout but configurable per chunk timeout
Project: http://git-wip-us.apache.org/repos/asf/couchdb-fabric/repo Commit: http://git-wip-us.apache.org/repos/asf/couchdb-fabric/commit/9fd8d61e Tree: http://git-wip-us.apache.org/repos/asf/couchdb-fabric/tree/9fd8d61e Diff: http://git-wip-us.apache.org/repos/asf/couchdb-fabric/diff/9fd8d61e Branch: refs/heads/import Commit: 9fd8d61e5aba9d091c45f68c613c4916e52278e9 Parents: e7a45f3 Author: Robert Newson <[email protected]> Authored: Mon Dec 17 16:55:20 2012 +0000 Committer: Robert Newson <[email protected]> Committed: Sat Jan 5 03:05:21 2013 +0000 ---------------------------------------------------------------------- src/fabric_doc_update.erl | 3 ++- src/fabric_util.erl | 12 +++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/couchdb-fabric/blob/9fd8d61e/src/fabric_doc_update.erl ---------------------------------------------------------------------- diff --git a/src/fabric_doc_update.erl b/src/fabric_doc_update.erl index d984829..dd6f2ca 100644 --- a/src/fabric_doc_update.erl +++ b/src/fabric_doc_update.erl @@ -34,7 +34,8 @@ go(DbName, AllDocs, Opts) -> W = couch_util:get_value(w, Options, integer_to_list(mem3:quorum(DbName))), Acc0 = {length(Workers), length(AllDocs), list_to_integer(W), GroupedDocs, dict:from_list([{Doc,[]} || Doc <- AllDocs])}, - try fabric_util:recv(Workers, #shard.ref, fun handle_message/3, Acc0) of + Timeout = fabric_util:request_timeout(), + try rexi_utils:recv(Workers, #shard.ref, fun handle_message/3, Acc0, infinity, Timeout) of {ok, {Health, Results}} when Health =:= ok; Health =:= accepted -> {Health, [R || R <- couch_util:reorder_results(AllDocs, Results), R =/= noreply]}; {timeout, Acc} -> http://git-wip-us.apache.org/repos/asf/couchdb-fabric/blob/9fd8d61e/src/fabric_util.erl ---------------------------------------------------------------------- diff --git a/src/fabric_util.erl b/src/fabric_util.erl index 3579f56..0e35ac2 100644 --- a/src/fabric_util.erl +++ b/src/fabric_util.erl @@ -17,6 +17,7 @@ -export([submit_jobs/3, submit_jobs/4, cleanup/1, recv/4, get_db/1, get_db/2, error_info/1, update_counter/3, remove_ancestors/2, create_monitors/1, kv/2, remove_down_workers/2]). +-export([request_timeout/0]). -include("fabric.hrl"). -include_lib("mem3/include/mem3.hrl"). @@ -46,12 +47,13 @@ cleanup(Workers) -> [rexi:kill(Node, Ref) || #shard{node=Node, ref=Ref} <- Workers]. recv(Workers, Keypos, Fun, Acc0) -> - Timeout = case couch_config:get("fabric", "request_timeout", "60000") of - "infinity" -> infinity; - N -> list_to_integer(N) - end, - rexi_utils:recv(Workers, Keypos, Fun, Acc0, Timeout, infinity). + rexi_utils:recv(Workers, Keypos, Fun, Acc0, request_timeout(), infinity). +request_timeout() -> + case couch_config:get("fabric", "request_timeout", "60000") of + "infinity" -> infinity; + N -> list_to_integer(N) + end. get_db(DbName) -> get_db(DbName, []).
