anchor.diff:                              "contain (measured from cas_misses)">>}]}]}]}].
   
   
  -index_server_resources_stats_description([]) ->
  +index_server_resources_stats_description(false) ->
       [];
  -index_server_resources_stats_description(_IndexNodes) ->
  +index_server_resources_stats_description(true) ->
       [{struct, [{name, <<"index_ram_percent">>},
                  {title, <<"Max Index RAM Used %">>},
                  {desc, <<"Percentage of Index RAM in use across all indexes on this server">>}]},
  
positive.code:                false ->
                     []
             end
          ++ membase_query_stats_description(AddQuery)
          ++ membase_index_stats_description(IndexNodes)
          ++ membase_fts_stats_description(FtsNodes)
          ++ membase_drift_stats_description()
         }]}].
  
  
negative.code:     GoXDCRStats = [{iolist_to_binary([<<"@xdcr-">>, Bucket]),
                      {grab_ui_stats("@xdcr-" ++ Bucket, Nodes, HaveStamp, Wnd)}}],
  
      ServiceNodes =
          lists:map(
            fun ({Service, Param}) ->
                    AllNodes = ns_cluster_membership:service_actual_nodes(
                                  ns_config:latest(), Service),
                    {Service,
                     {Param,
                      case should_grab_service_stats(Nodes, AllNodes) of
                          true ->
                              case Service of
                                  n1ql ->
                                      all;
                                  _ ->
                                      Nodes
                              end;
                          false ->
                              []
                      end}}
            end, services_add_params()),
  
      FullStats =
          lists:foldl(
            fun (Section, AccStats) ->
                    {Service, _Bucket} = describe_section(Section),
                    case proplists:get_value(Service, ServiceNodes) of
                        {_, []} ->
                            AccStats;
                        {_, N1} ->
                            SectionStats =
                                {list_to_binary(Section),
                                 {grab_ui_stats(Section, N1, HaveStamp, Wnd)}},
                            [SectionStats | AccStats]
                    end
            end, GoXDCRStats, services_sections(Bucket)),
  
      Stats = [{list_to_binary(Bucket), {BS}}, {<<"@system">>, {SS}} | FullStats],
      NewHaveStamp = [case proplists:get_value(timestamp, S) of
                          [] -> {Name, 0};
                          L -> {Name, lists:last(L)}
                      end || {Name, {S}} <- Stats],
  
      StatsDirectoryV =
          erlang:phash2(
            base_stats_directory(
              Bucket,
              [{Service, N} || {Service, {_, N}} <- ServiceNodes])),
  
      DirAddParams =
          lists:foldl(
            fun ({_Service, {_Param, []}}, Acc) ->
                    Acc;
                ({n1ql, {Param, all}}, Acc) ->
                    [{Param, <<"1">>} | Acc];
                ({_Service, {Param, SNodes}}, Acc) ->
                    [{Param, iolist_to_binary(ejson:encode(SNodes))} | Acc]
            end, [], ServiceNodes),
  
      DirQS = [{v, integer_to_list(StatsDirectoryV)} | DirAddParams],
      DirURL = "/pools/default/buckets/" ++
          menelaus_util:concat_url_path([Bucket, "statsDirectory"], DirQS),
  
      [{hot_keys, HKs0}] = build_bucket_stats_hks_response(Bucket, Nodes),
      HKs = [{HK} || {struct, HK} <- HKs0],
  