diff options
-rw-r--r-- | src/couch/src/couch_server.erl | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/couch/src/couch_server.erl b/src/couch/src/couch_server.erl index 480ed58ed..59b630ee7 100644 --- a/src/couch/src/couch_server.erl +++ b/src/couch/src/couch_server.erl @@ -293,7 +293,7 @@ init([N]) -> process_flag(trap_exit, true), {ok, #server{root_dir=RootDir, engines = Engines, - max_dbs_open=MaxDbsOpen div couch_server:num_servers(), + max_dbs_open=per_couch_server(MaxDbsOpen), update_lru_on_read=UpdateLruOnRead, start_time=couch_util:rfc1123_date(), couch_dbs=couch_dbs(N), @@ -322,11 +322,13 @@ handle_config_change("couchdb", "update_lru_on_read", "true", _, N) -> handle_config_change("couchdb", "update_lru_on_read", _, _, N) -> gen_server:call(couch_server(N),{set_update_lru_on_read,false}), {ok, N}; -handle_config_change("couchdb", "max_dbs_open", Max, _, N) when is_list(Max) -> - gen_server:call(couch_server(N),{set_max_dbs_open,list_to_integer(Max)}), +handle_config_change("couchdb", "max_dbs_open", Max0, _, N) when is_list(Max0) -> + Max1 = per_couch_server(list_to_integer(Max0)), + gen_server:call(couch_server(N),{set_max_dbs_open,Max1}), {ok, N}; handle_config_change("couchdb", "max_dbs_open", _, _, N) -> - gen_server:call(couch_server(N),{set_max_dbs_open,?MAX_DBS_OPEN}), + Max = per_couch_server(?MAX_DBS_OPEN), + gen_server:call(couch_server(N),{set_max_dbs_open,Max}), {ok, N}; handle_config_change("couchdb_engines", _, _, _, N) -> gen_server:call(couch_server(N), reload_engines), @@ -356,6 +358,10 @@ handle_config_terminate(_Server, _Reason, N) -> erlang:send_after(?RELISTEN_DELAY, whereis(?MODULE), {restart_config_listener, N}). +per_couch_server(X) -> + erlang:max(1, X div couch_server:num_servers()). + + all_databases() -> {ok, DbList} = all_databases( fun(DbName, Acc) -> {ok, [DbName | Acc]} end, []), |