Repository: couchdb-couch Updated Branches: refs/heads/master 66292dbdf -> 38d51803a
Add sys db callbacks only once per db open Currently we are adding the sys db callbacks for every request instead of once while opening the db. This fix will ensure that we will only add the sys db call backs once while opening the db. COUCHDB-3307 Project: http://git-wip-us.apache.org/repos/asf/couchdb-couch/repo Commit: http://git-wip-us.apache.org/repos/asf/couchdb-couch/commit/8fc85c86 Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch/tree/8fc85c86 Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch/diff/8fc85c86 Branch: refs/heads/master Commit: 8fc85c8653dcec640717d8a51ea29a28194cbe4a Parents: 66292db Author: brkolla <bko...@cloudant.com> Authored: Sun Feb 19 16:33:39 2017 -0500 Committer: brkolla <bko...@cloudant.com> Committed: Tue Feb 28 11:40:00 2017 -0500 ---------------------------------------------------------------------- src/couch_server.erl | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/8fc85c86/src/couch_server.erl ---------------------------------------------------------------------- diff --git a/src/couch_server.erl b/src/couch_server.erl index 59bffa5..893b957 100644 --- a/src/couch_server.erl +++ b/src/couch_server.erl @@ -71,18 +71,17 @@ sup_start_link() -> open(DbName, Options0) -> - Options = maybe_add_sys_db_callbacks(DbName, Options0), - Ctx = couch_util:get_value(user_ctx, Options, #user_ctx{}), + Ctx = couch_util:get_value(user_ctx, Options0, #user_ctx{}), case ets:lookup(couch_dbs, DbName) of - [#db{fd=Fd, fd_monitor=Lock} = Db] when Lock =/= locked -> + [#db{fd=Fd, fd_monitor=Lock, options=Options} = Db] when Lock =/= locked -> update_lru(DbName, Options), {ok, Db#db{user_ctx=Ctx, fd_monitor=erlang:monitor(process,Fd)}}; _ -> + Options = maybe_add_sys_db_callbacks(DbName, Options0), Timeout = couch_util:get_value(timeout, Options, infinity), Create = couch_util:get_value(create_if_missing, Options, false), case gen_server:call(couch_server, {open, DbName, Options}, Timeout) of {ok, #db{fd=Fd} = Db} -> - update_lru(DbName, Options), {ok, Db#db{user_ctx=Ctx, fd_monitor=erlang:monitor(process,Fd)}}; {not_found, no_db_file} when Create -> couch_log:warning("creating missing database: ~s", [DbName]),