anchor.diff:  %% @doc Build clusters out of the given node list
   -spec join_cluster(list(atom())) -> ok.
   join_cluster([MainNode | OtherNodes] = Nodes) ->
  -    %% Ensure nodes have non-overlapping rings according to the master node,
  -    %% also, each node should own its entire ring
  -    true = lists:all(fun(Node) ->
  -        case owners_according_to(Node, MainNode) of
  -            {ok, [Node]} ->
  -                true;
  -            _ ->
  -                false
  -        end
  -    end, Nodes),
  -
  -    ok = case OtherNodes of
  -        [] ->
  -            %% no other nodes, nothing to join/plan/commit
  -            ok;
  -
  -        _ ->
  -            %% Do a plan/commit staged join, instead of sequential joins
  -            ok = lists:foreach(fun(N) -> request_join(N, MainNode) end, OtherNodes),
  -            ok = wait_plan_ready(MainNode),
  -            ok = commit_plan(MainNode),
  -            ok = try_cluster_ready(Nodes)
  +    ok = case check_nodes_own_their_ring(Nodes) of
  +         ok ->
  +             ok;
  +        {error, FaultyNode, Reason} ->
  +            io:fwrite(standard_error, "Bad node ~s on ownership check with reason ~p", [FaultyNode, Reason]),
  +            halt(1)
       end,
  +
  +    %% Do a plan/commit staged join, instead of sequential joins
  +    ok = lists:foreach(fun(N) -> request_join(N, MainNode) end, OtherNodes),
  +    ok = wait_plan_ready(MainNode),
  +    ok = commit_plan(MainNode),
  +    ok = try_cluster_ready(Nodes),
   
       ok = wait_until_nodes_ready(Nodes),
   
  
positive.code: 
              rpc:multicall(Nodes, inter_dc_manager, start_bg_processes, [stable], infinity),
              io:format("Successfully joined nodes ~p~n", [Nodes])
  
      end.
  
  -spec parse_node_list(list(string())) -> {ok, [node()]} | error.
  
negative.code:     NoPendingHandoffs = fun() ->
          rpc:multicall(Nodes, riak_core_vnode_manager, force_handoffs, []),
          {Rings, BadNodes} = rpc:multicall(Nodes, riak_core_ring_manager, get_raw_ring, []),
          io:format("Check no pending handoffs (badnodes: ~p)...~n", [BadNodes]),
          case BadNodes of
              [] ->
                  lists:all(fun({ok, Ring}) ->
  