anchor.diff:  	    false
       end.
   
  --spec reconnect_dcs_after_restart([#descriptor{}]) -> [ok | inter_dc_conn_err()].
  -reconnect_dcs_after_restart(Descriptors) ->
  -    ok = forget_dcs(Descriptors),
  -    observe_dcs_sync(Descriptors).
  -
  --spec observe_dcs([#descriptor{}]) -> [ok | inter_dc_conn_err()].
  -observe_dcs(Descriptors) -> lists:map(fun observe_dc/1, Descriptors).
  -
  +-spec reconnect_dcs_after_restart([#descriptor{}], node()) -> [ok | inter_dc_conn_err()].
  +reconnect_dcs_after_restart(Descriptors, MyNode) ->
  +    ok = forget_dcs(Descriptors, [MyNode]),
  +    observe_dcs_sync(Descriptors, [MyNode]).
  +
  +%% This should be called when connecting the local DC to a new external DC
   -spec observe_dcs_sync([#descriptor{}]) -> [ok | inter_dc_conn_err()].
   observe_dcs_sync(Descriptors) ->
  +    Nodes = dc_utilities:get_my_dc_nodes(),
  +    observe_dcs_sync(Descriptors, Nodes).
  +
  +-spec observe_dcs_sync([#descriptor{}], [node()]) -> [ok | inter_dc_conn_err()].
  +observe_dcs_sync(Descriptors, Nodes) ->
       {ok, SS} = dc_utilities:get_stable_snapshot(),
       DCs = lists:map(fun(DC) ->
  -			    {observe_dc(DC), DC}
  +			    {observe_dc(DC, Nodes), DC}
   		    end, Descriptors),
       lists:foreach(fun({Res, Desc = #descriptor{dcid = DCID}}) ->
   			  case Res of
  
positive.code: 
  %%%%%%%%%%%%%
  %% Utils
  
  observe(DcNodeAddress) ->
    {ok, Desc} = rpc:call(DcNodeAddress, inter_dc_manager, get_descriptor, []),
    observe_dc(Desc).
  
  wait_for_stable_snapshot(DCID, MinValue) ->
    case DCID == dc_meta_data_utilities:get_my_dc_id() of
  
negative.code: connect_nodes([], _DCID, _LogReaders, _Publishers, _Desc, _Retries) ->
      ok;
  connect_nodes(_Nodes, _DCID, _LogReaders, _Publishers, Desc, 0) ->
      ok = forget_dcs([Desc]),
      {error, connection_error};    
  connect_nodes([Node|Rest], DCID, LogReaders, Publishers, Desc, Retries) ->
      case rpc:call(Node, inter_dc_query, add_dc, [DCID, LogReaders], ?COMM_TIMEOUT) of
  