anchor.diff:  handle_config_change("couchdb", "database_dir", _, _, _) ->
       exit(whereis(couch_server), config_change),
       remove_handler;
  -handle_config_change("couchdb", "max_dbs_open", Max, _, _) ->
  +handle_config_change("couchdb", "max_dbs_open", Max, _, _) when is_list(Max) ->
       {ok, gen_server:call(couch_server,{set_max_dbs_open,list_to_integer(Max)})};
  +handle_config_change("couchdb", "max_dbs_open", _, _, _) ->
  +    {ok, gen_server:call(couch_server,{set_max_dbs_open,?MAX_DBS_OPEN})};
   handle_config_change("admins", _, _, Persist, _) ->
       % spawn here so couch event manager doesn't deadlock
       {ok, spawn(fun() -> hash_admin_passwords(Persist) end)};
  
positive.code: 
      RootDir = config:get("couchdb", "database_dir", "."),
      MaxDbsOpen = list_to_integer(
              config:get("couchdb", "max_dbs_open")),
      ok = config:listen_for_changes(?MODULE, nil),
      ok = couch_file:init_delete_dir(RootDir),
      hash_admin_passwords(),
  
negative.code: 
  -include_lib("couch/include/couch_db.hrl").
  
  -define(MAX_DBS_OPEN, 100).
  
  -record(server,{
      root_dir = [],
      dbname_regexp,
      max_dbs_open=?MAX_DBS_OPEN,
      dbs_open=0,
      start_time="",
      lru = couch_lru:new()
  