anchor.diff:                case ets:lookup(bucket_info_cache, BucketName) of
                     [] ->
                         case compute_bucket_info(BucketName) of
  -                          {ok, V} ->
  +                          {ok, V, BucketConfig} ->
                                 ets:insert(bucket_info_cache, {BucketName, V}),
  +                              ets:insert(bucket_info_cache_buckets, {BucketName, BucketConfig}),
                                 {ok, V};
                             Other ->
                                 %% note: we might consider caching
  
positive.code: cache_init() ->
      {ok, _} = gen_event:start_link({local, bucket_info_cache_invalidations}),
      ets:new(bucket_info_cache, [set, named_table]),
      Self = self(),
      ns_pubsub:subscribe_link(ns_config_events, fun cleaner_loop/2, {Self, []}),
      submit_full_reset().
  
  cleaner_loop({buckets, [{configs, NewBuckets0}]}, {Parent, CurrentBuckets}) ->
      NewBuckets = lists:sort(NewBuckets0),
      ToClean = ordsets:subtract(CurrentBuckets, NewBuckets),
      BucketNames  = [Name || {Name, _} <- ToClean],
      submit_buckets_reset(Parent, BucketNames),
      {Parent, NewBuckets};
  cleaner_loop({{_, _, capi_port}, _Value}, State) ->
      submit_full_reset(),
      State;
  
negative.code:           {nodeLocator, ns_bucket:node_locator(BucketConfig)},
            {uuid, UUID}
            | MaybeVBMap]},
      {ok, ejson:encode(J), BucketConfig}.
  
  compute_bucket_info(Bucket) ->
      Config = ns_config:get(),
  