summaryrefslogtreecommitdiff
path: root/src/couch/src/couch_server.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/couch/src/couch_server.erl')
-rw-r--r--src/couch/src/couch_server.erl27
1 files changed, 19 insertions, 8 deletions
diff --git a/src/couch/src/couch_server.erl b/src/couch/src/couch_server.erl
index 909e23898..42eab738c 100644
--- a/src/couch/src/couch_server.erl
+++ b/src/couch/src/couch_server.erl
@@ -18,7 +18,7 @@
-export([open/2,create/2,delete/2,get_version/0,get_version/1,get_git_sha/0,get_uuid/0]).
-export([all_databases/0, all_databases/2]).
-export([init/1, handle_call/3,sup_start_link/0]).
--export([handle_cast/2,code_change/3,handle_info/2,terminate/2]).
+-export([handle_cast/2,code_change/3,handle_info/2,terminate/2,format_status/2]).
-export([dev_start/0,is_admin/2,has_admins/0,get_stats/0]).
-export([close_lru/0]).
-export([close_db_if_idle/1]).
@@ -237,15 +237,19 @@ init([]) ->
couch_util:set_mqd_off_heap(?MODULE),
couch_util:set_process_priority(?MODULE, high),
- % Mark pluggable storage engines as a supported feature
- config:enable_feature('pluggable-storage-engines'),
-
- % Mark partitioned databases as a supported feature
- config:enable_feature(partitioned),
-
% Mark being able to receive documents with an _access property as a supported feature
config:enable_feature('access-ready'),
+ % Mark if fips is enabled
+ case
+ erlang:function_exported(crypto, info_fips, 0) andalso
+ crypto:info_fips() == enabled of
+ true ->
+ config:enable_feature('fips');
+ false ->
+ ok
+ end,
+
% read config and register for configuration changes
% just stop if one of the config settings change. couch_server_sup
@@ -294,6 +298,10 @@ terminate(Reason, Srv) ->
end, nil, couch_dbs),
ok.
+format_status(_Opt, [_PDict, Srv]) ->
+ Scrubbed = Srv#server{lru=couch_lru:sizes(Srv#server.lru)},
+ [{data, [{"State", ?record_to_keyval(server, Scrubbed)}]}].
+
handle_config_change("couchdb", "database_dir", _, _, _) ->
exit(whereis(couch_server), config_change),
remove_handler;
@@ -381,10 +389,13 @@ maybe_close_lru_db(#server{lru=Lru}=Server) ->
end.
open_async(Server, From, DbName, Options) ->
+ NoLRUServer = Server#server{
+ lru = redacted
+ },
Parent = self(),
T0 = os:timestamp(),
Opener = spawn_link(fun() ->
- Res = open_async_int(Server, DbName, Options),
+ Res = open_async_int(NoLRUServer, DbName, Options),
IsSuccess = case Res of
{ok, _} -> true;
_ -> false