anchor.diff:  -export([start_link/1, init/1, on/2, check_config/0]).
   
   -record(state,
  -        {round   = 0                         :: non_neg_integer(),
  +        {id      = ?required(state, id)      :: util:global_uid(),
            perf_rr = ?required(state, perf_rr) :: rrd:rrd(),
            perf_lh = ?required(state, perf_lh) :: rrd:rrd()
           }).
  
positive.code:         false -> State;
          _ ->
              % start a new timeslot and gather stats...
              NewRound = Leader#state.round + 1,
              Msg = {send_to_group_member, monitor_perf, {gather_stats, comm:this(), NewRound}},
              bulkowner:issue_bulk_owner(intervals:all(), Msg),
              Leader1 = check_timeslots(Leader),
              broadcast_values(Leader, Leader1),
              {AllNodes, Leader1#state{round = NewRound}}
      end;
  
  on({gather_stats, SourcePid, Round} = _Msg, State) ->
      ?TRACE1(_Msg, State),
      This = comm:this_with_cookie({SourcePid, Round}),
      comm:send_local(pid_groups:get_my(monitor),
                      {get_rrds, [{?MODULE, "read_read"}, {dht_node, "lookup_hops"}], This}),
      State;
  
  on({{get_rrds_response, DBs}, {SourcePid, Round}} = _Msg, State) ->
      ?TRACE1(_Msg, State),
      DataL = lists:flatten(
                [begin
  
negative.code:     {bench} |
      {propagate} |
      {get_node_details_response, node_details:node_details()} |
      {gather_stats, SourcePid::comm:mypid(), Id::util:global_uid()} |
      {{get_rrds_response, [{Process::atom(), Key::string(), DB::rrd:rrd() | undefined}]}, {SourcePid::comm:mypid(), Id::util:global_uid()}} |
      {gather_stats_response, Id::util:global_uid(), [{Process::atom(), Key::string(), Data::rrd:timing_type(number())}]} |
      {report_value, StatsOneRound::#state{}} |
      {get_rrds, [{Process::atom(), Key::string()},...], SourcePid::comm:mypid()}.
  
  