summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Vatamaniuc <vatamane@apache.org>2020-06-02 16:57:35 -0400
committerNick Vatamaniuc <nickva@users.noreply.github.com>2020-06-02 17:11:25 -0400
commitb3fe0902683af5c65813cb0623a791cd8d9b8873 (patch)
tree3096d2d186e348ffc68dbc88e00b559ba77b8b5a
parent9f8b4fdb26414b556edeaaa1d56bf13d418e0c87 (diff)
downloadcouchdb-b3fe0902683af5c65813cb0623a791cd8d9b8873.tar.gz
Handle error:{timeout, _} exception in couch_jobs:accept
Under load accept loop can blow up with timeout error from `erlfdb:wait(...)`(https://github.com/apache/couchdb-erlfdb/blob/master/src/erlfdb.erl#L255) so guard against it just like we do for fdb transaction timeout (1031) errors.
-rw-r--r--src/couch_jobs/src/couch_jobs.erl2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/couch_jobs/src/couch_jobs.erl b/src/couch_jobs/src/couch_jobs.erl
index adc1b464e..5f79407c5 100644
--- a/src/couch_jobs/src/couch_jobs.erl
+++ b/src/couch_jobs/src/couch_jobs.erl
@@ -300,6 +300,8 @@ accept_loop(Type, NoSched, MaxSchedTime, Timeout) ->
AcceptResult = try
couch_jobs_fdb:tx(couch_jobs_fdb:get_jtx(), TxFun)
catch
+ error:{timeout, _} ->
+ retry;
error:{erlfdb_error, Err} when Err =:= 1020 orelse Err =:= 1031 ->
retry
end,