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, []).

Reply via email to