anchor.diff:  code_change(_OldVsn, State, _Extra) ->
       {ok, State}.
   
  -reconfig(_PortServers) ->
  -    {value, PortServers} = ns_port_sup:port_servers_config(),
  +reconfig(PortServers) ->
       % CurrPorts looks like...
       %   [{memcached,<0.77.0>,worker,[ns_port_server]}]
       % Or, if the child process went down, then...
  
positive.code: -export([init/1, handle_event/2, handle_call/2,
           handle_info/2, terminate/2, code_change/3]).
  
  -record(state, {}).
  
  % Noop process to get initialized in the supervision tree.
  start_link() ->
  
negative.code: init(ignored) ->
      {ok, #state{}}.
  
  handle_event(Event, State) ->
      case is_useless_event(Event) of
          true ->
              {ok, State};
          false ->
              {value, PortServers} = ns_port_sup:port_servers_config(),
              case State#state.old_port_servers_config =:= PortServers of
                  true ->
                      {ok, State};
                  false ->
                      ok = reconfig(PortServers),
                      {ok, State#state{old_port_servers_config= PortServers}}
              end
      end.
  
  %% ns_config announces full list as well which we don't need
  is_useless_event(List) when is_list(List) ->
      true;
  %% buckets are frequently changing and are generally useless for port
  %% servers
  is_useless_event({buckets, _}) ->
      true;
  %% config changes for other nodes is quite obviously irrelevant
  is_useless_event({{node, N, _}, _}) when N =/= node() ->
      true;
  is_useless_event(_) ->
      false.
  
  handle_call(unhandled, unhandled) ->
      unhandled.
  