anchor.diff:  %% @doc This service watches changes of terse bucket info and uploads
   %% it to ep-engine
   -module(terse_bucket_info_uploader).
  +
  +-behaviour(gen_server).
  +
   -include("ns_common.hrl").
   
   -export([start_link/1,
            refresh_cluster_config/1,
            get_pid/1]).
   
  +%% gen_server callbacks
  +-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
  +         terminate/2, code_change/3]).
  +
  +-define(SERVER, ?MODULE).
  +
  +-record(state, {}).
  +
  +%%%===================================================================
  +%%% API
  +%%%===================================================================
   start_link(BucketName) ->
       ns_bucket_sup:ignore_if_not_couchbase_bucket(
         BucketName,
         fun (_) ->
                 Name = server_name(BucketName),
  -              work_queue:start_link(Name, fun () -> init(BucketName) end)
  +              gen_server:start_link({local, Name}, ?MODULE, BucketName, [])
         end).
   
   get_pid(BucketName) ->
  
positive.code: server_name(BucketName) ->
      list_to_atom("terse_bucket_info_uploader-" ++ BucketName).
  
  init(BucketName) ->
      Self = self(),
      ns_pubsub:subscribe_link(bucket_info_cache_invalidations, fun invalidation_loop/2, {BucketName, Self}),
      submit_refresh(BucketName, Self).
  
  refresh_cluster_config(BucketName) ->
      case bucket_info_cache:terse_bucket_info(BucketName) of
  
negative.code:     end.
  
  submit_refresh(BucketName, Process) ->
      Process ! {refresh, BucketName}.
  
  invalidation_loop(BucketName, {BucketName, Parent}) ->
      submit_refresh(BucketName, Parent),
  