Github user KlausTrainer commented on a diff in the pull request:
https://github.com/apache/couchdb/pull/172#discussion_r10466885
--- Diff: src/couch_replicator/src/couch_replicator_httpc.erl ---
@@ -131,6 +171,90 @@ process_stream_response(ReqId, Worker, HttpDb, Params,
Callback) ->
end.
+process_stream_response_headers(ReqId, Code, Headers, Worker, HttpDb,
Params, Callback) ->
+ StreamDataFun = fun() ->
+ stream_data_self(HttpDb, Params, Worker, ReqId, Callback)
+ end,
+ ibrowse:stream_next(ReqId),
+ try
+ Ret = Callback(Code, Headers, StreamDataFun),
+ release_worker(Worker, HttpDb),
+ clean_mailbox_req(ReqId),
+ Ret
+ catch throw:{maybe_retry_req, Err} ->
+ clean_mailbox_req(ReqId),
+ maybe_retry(Err, Worker, HttpDb, Params, Callback)
+ end.
+
+
+maybe_start_new_session(HttpDb) ->
+ case need_new_session(HttpDb) of
+ false -> false;
+ true -> start_new_session(HttpDb)
+ end.
+
+
+maybe_start_new_session(HttpDb, Worker) ->
+ case need_new_session(HttpDb) of
+ false -> false;
+ true -> start_new_session(HttpDb, Worker)
+ end.
+
+
+need_new_session(#httpdb{credentials = undefined}) ->
+ false;
+
+need_new_session(#httpdb{credentials = Credentials}) ->
+ case ets:lookup(Credentials, cookie) of
+ [] ->
+ true;
+ [{cookie, _, UpdatedAt}] ->
+ %% As we don't know when the cookie will expire, we just decide
+ %% that we want a new session if the current one is older than
+ %% one minute.
+ OneMinute = 60 * 1000000, % microseconds
--- End diff --
@benoitc I'm sorry, I don't see how `TS - Now` could relate to the expiry
time that's configured on the remote server.
@kxepal Retrieving the timeout via `couch_config:get/3` will only tell us
the timeout that's configured locally, which is unrelated to the timeout that's
configured on the remote DB.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---