anchor.diff:      prompt_fun,
       set_timeout_fun,
       stop_fun
  +}).
  +
  +-record(qserver, {
  +    langs, % Keyed by language name, value is {Mod,Func,Arg}
  +    pid_procs, % Keyed by PID, valus is a #proc record.
  +    lang_procs, % Keyed by language name, value is a #proc record
  +    lang_limits, % Keyed by language name, value is {Lang, Limit, Current}
  +    waitlist = [],
  +    config
   }).
   
   start_link() ->
  
positive.code: get_ddoc_process(#doc{} = DDoc, DDocKey) ->
      % remove this case statement
      case gen_server:call(couch_query_servers, {get_proc, DDoc, DDocKey}) of
      {ok, Proc, QueryConfig} ->
          % process knows the ddoc
          case (catch proc_prompt(Proc, [<<"reset">>, QueryConfig])) of
          true ->
              proc_set_timeout(Proc, list_to_integer(couch_config:get(
                                  "couchdb", "os_process_timeout", "5000"))),
              link(Proc#proc.pid),
              gen_server:call(couch_query_servers, {unlink_proc, Proc#proc.pid}),
              Proc;
  
negative.code:         end,
          rem_value(PidProcs, Pid),
          catch rem_from_list(LangProcs, Proc#proc.lang, Proc),
          [{Lang, Lim, Current}] = ets:lookup(LangLimits, Proc#proc.lang),
          true = ets:insert(LangLimits, {Lang, Lim, Current-1}),
          {noreply, service_waitlist(Server)};
      [] ->
          case Status of
          normal ->
  