anchor.diff:                    {<<"a">>, AStats}]).
   
   handle_info({tick, TS0}, #state{prev_counters = PrevCounters,
  -                                prev_ts = PrevTS}) ->
  +                                prev_ts = PrevTS,
  +                                buckets = KnownBuckets,
  +                                default_stats = Defaults} = State) ->
       TS = latest_tick(TS0, 0),
       {Stats, NewCounters, Status} = grab_stats(PrevCounters, TS - PrevTS),
       Indexes = lists:foldl(
  
positive.code:             end,
              TS
      end.
  
  -define(I_GAUGES, [disk_size, data_size, num_docs_pending, items_count]).
  -define(I_COUNTERS, [num_requests, num_rows_returned, num_docs_indexed,
                       scan_bytes_read, total_scan_duration]).
  
  do_recognize_name(<<"needs_restart">>) ->
      {status, index_needs_restart};
  
negative.code: init([]) ->
      ns_pubsub:subscribe_link(ns_tick_event),
      ets:new(index_stats_collector_names, [protected, named_table]),
  
      Self = self(),
      ns_pubsub:subscribe_link(
        ns_config_events,
        fun ({buckets, BucketConfigs}) ->
                Self ! {buckets, ns_bucket:get_bucket_names(membase, BucketConfigs)};
            (_) ->
                ok
        end),
  
      Buckets = lists:map(fun list_to_binary/1, ns_bucket:get_bucket_names(membase)),
      Defaults = [{global_index_stat(atom_to_binary(Stat, latin1)), 0}
                  || Stat <- ?I_GAUGES ++ ?I_COUNTERS],
  
  
      {ok, #state{buckets = Buckets,
                  default_stats = Defaults}}.
  
  handle_call(_Request, _From, State) ->
      Reply = ok,
  