anchor.diff:          [] ->
               % db was deleted during async open
               {reply, ok, Server};
  -        [#db{fd=ReqType, compactor_pid=Froms}=Db] ->
  +        [#db{fd=ReqType, compactor_pid=Froms}] ->
               [gen_server:reply(From, Error) || From <- Froms],
               couch_log:info("open_result error ~p for ~s", [Error, DbName]),
               true = ets:delete(couch_dbs, DbName),
  
positive.code:     ok ->
          case ets:lookup(couch_dbs, DbName) of
          [] ->
              case maybe_close_lru_db(Server) of
              {ok, Server2} ->
                  {noreply, open_async(Server2, From, DbName, Filepath,
                          [create | Options])};
              CloseError ->
                  {reply, CloseError, Server}
              end;
          [#db{fd=open}=Db] ->
              % We're trying to create a database while someone is in
              % the middle of trying to open it. We allow one creator
  
negative.code:         Server2 =
          case ets:lookup(couch_dbs, DbName) of
          [] -> Server;
          [#db{main_pid=Pid, compactor_pid=Froms}] when is_list(Froms) ->
              % icky hack of field values - compactor_pid used to store clients
              true = ets:delete(couch_dbs, DbName),
              true = ets:delete(couch_dbs_pid_to_name, Pid),
              exit(Pid, kill),
              [gen_server:reply(F, not_found) || F <- Froms],
              db_closed(Server);
          [#db{main_pid=Pid}] ->
              true = ets:delete(couch_dbs, DbName),
              true = ets:delete(couch_dbs_pid_to_name, Pid),
              exit(Pid, kill),
  