You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ja...@apache.org on 2010/02/28 03:48:29 UTC

svn commit: r917103 - in /couchdb/trunk: THANKS src/couchdb/couch_rep_att.erl src/couchdb/couch_rep_changes_feed.erl

Author: jan
Date: Sun Feb 28 02:48:29 2010
New Revision: 917103

URL: http://svn.apache.org/viewvc?rev=917103&view=rev
Log:
Revert "Avoid replication task crashes by imporoving timeout handling."

Needs more testing.

Modified:
    couchdb/trunk/THANKS
    couchdb/trunk/src/couchdb/couch_rep_att.erl
    couchdb/trunk/src/couchdb/couch_rep_changes_feed.erl

Modified: couchdb/trunk/THANKS
URL: http://svn.apache.org/viewvc/couchdb/trunk/THANKS?rev=917103&r1=917102&r2=917103&view=diff
==============================================================================
--- couchdb/trunk/THANKS (original)
+++ couchdb/trunk/THANKS Sun Feb 28 02:48:29 2010
@@ -50,6 +50,5 @@
  * Joel Clark <un...@yahoo.com>
  * Matt Lyon <ma...@flowerpowered.com>
  * mikeal <mi...@gmail.com>
- * Randall Leeds <ra...@gmail.com>
 
 For a list of authors see the `AUTHORS` file.

Modified: couchdb/trunk/src/couchdb/couch_rep_att.erl
URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_rep_att.erl?rev=917103&r1=917102&r2=917103&view=diff
==============================================================================
--- couchdb/trunk/src/couchdb/couch_rep_att.erl (original)
+++ couchdb/trunk/src/couchdb/couch_rep_att.erl Sun Feb 28 02:48:29 2010
@@ -25,11 +25,7 @@
         qs = [{rev, couch_doc:rev_to_str({Pos,RevId})}]
     },
     Ref = make_ref(),
-    RcvFun = fun() ->
-                 Bin = attachment_receiver(Ref, Request),
-                 cleanup(),
-                 Bin
-             end,
+    RcvFun = fun() -> attachment_receiver(Ref, Request) end,
     Attachment#att{data=RcvFun}.
 
 cleanup() ->
@@ -38,8 +34,6 @@
         %% TODO maybe log, didn't expect to have data here
         cleanup();
     {ibrowse_async_response_end, _} -> 
-        cleanup();
-    {ibrowse_async_headers, _, _, _} ->
         cleanup()
     after 0 ->
         erase(),
@@ -49,27 +43,13 @@
 % internal funs
 
 attachment_receiver(Ref, Request) ->
-    try case get(Ref) of
+    case get(Ref) of
     undefined ->
         {ReqId, ContentEncoding} = start_http_request(Request),
         put(Ref, {ReqId, ContentEncoding}),
         receive_data(Ref, ReqId, ContentEncoding);
     {ReqId, ContentEncoding} ->
         receive_data(Ref, ReqId, ContentEncoding)
-    end
-    catch
-    throw:{attachment_request_failed, timeout} ->
-        case {Request#http_db.retries, Request#http_db.pause} of
-        {0, _} ->
-             ?LOG_INFO("request for ~p failed", [Request#http_db.resource]),
-             throw({attachment_request_failed, max_retries_reached});
-        {N, Pause} when N > 0 ->
-            ?LOG_INFO("request for ~p timed out, retrying in ~p seconds",
-                [Request#http_db.resource, Pause/1000]),
-            timer:sleep(Pause),
-            cleanup(),
-            attachment_receiver(Ref, Request#http_db{retries = N-1})
-        end
     end.
 
 receive_data(Ref, ReqId, ContentEncoding) ->
@@ -91,8 +71,6 @@
     {ibrowse_async_response_end, ReqId} ->
         ?LOG_ERROR("streaming att. ended but more data requested ~p", [ReqId]),
         throw({attachment_request_failed, premature_end})
-    after 31000 ->
-        throw({attachment_request_failed, timeout})
     end.
 
 start_http_request(Req) ->
@@ -106,8 +84,6 @@
         {ok, ContentEncoding, NewReqId} ->
             {NewReqId, ContentEncoding}
         end
-    after 10000 ->
-        throw({attachment_request_failed, timeout})
     end.
 
 validate_headers(_Req, 200, Headers) ->

Modified: couchdb/trunk/src/couchdb/couch_rep_changes_feed.erl
URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_rep_changes_feed.erl?rev=917103&r1=917102&r2=917103&view=diff
==============================================================================
--- couchdb/trunk/src/couchdb/couch_rep_changes_feed.erl (original)
+++ couchdb/trunk/src/couchdb/couch_rep_changes_feed.erl Sun Feb 28 02:48:29 2010
@@ -83,7 +83,8 @@
         resource = "_changes",
         qs = QS,
         conn = Pid,
-        options = [{stream_to, {self(), once}}, {response_format, binary}],
+        options = [{stream_to, {self(), once}}, {response_format, binary},
+            {inactivity_timeout, 31000}], % miss 3 heartbeats, assume death
         headers = Source#http_db.headers -- [{"Accept-Encoding", "gzip"}]
     },
     {ibrowse_req_id, ReqId} = couch_rep_httpc:request(Req),
@@ -202,9 +203,6 @@
     ?LOG_ERROR("changes_loop died with reason ~p", [Reason]),
     {stop, changes_loop_died, State};
 
-handle_info({'EXIT', _From, normal}, State) ->
-    {noreply, State};
-
 handle_info(Msg, State) ->
     ?LOG_DEBUG("unexpected message at changes_feed ~p", [Msg]),
     {noreply, State}.