anchor.diff:  % Returns a subset of the nodes_wanted() that we see.
   
   nodes_actual_proper() ->
  -    % TODO: Track flapping nodes and attenuate.
  -    %
       Curr = nodes_actual(),
       Want = nodes_wanted(),
       Diff = lists:subtract(Curr, Want),
  
positive.code:                [NewCookie]),
      cookie_set(NewCookie).
  
  % Gets our wanted otp cookie.
  %
  cookie_set(Cookie) ->
      X = ns_config:set(otp, [{cookie, Cookie}]),
  
negative.code:             end
      end.
  
  % --------------------------------------------------
  
  loop() ->
      Timeout = 5000 + trunc(random:uniform() * 55000),
      receive
          {nodeup, Node} ->
              % Handle network partition healing here.  This is
              % different than a node restarting, since in a network
              % partition healing, nodes might be long-running and have
              % diverged config.
              error_logger:info_msg("new node: ~p~n", [Node]),
              spawn(fun() ->
                        % In a spawned process to not hold up nodeup/down.
                        config_pull([Node], 1)
                    end),
              ok;
          {nodedown, Node} ->
              error_logger:info_msg("lost node: ~p~n", [Node])
      after Timeout ->
          config_pull(1)
      end,
      ?MODULE:loop().
  
  % --------------------------------------------------
  