anchor.diff:          Error -> erlang:error(Error)
       end.
   
  -start_update_notifiers(DbName) ->
  +start_update_notifiers(Shards) ->
       EndPointDict = lists:foldl(fun(#shard{node=Node, name=Name}, Acc) ->
           dict:append(Node, Name, Acc)
  -    end, dict:new(), mem3:shards(DbName)),
  +    end, dict:new(), Shards),
       lists:map(fun({Node, DbNames}) ->
           Ref = rexi:cast(Node, {?MODULE, start_update_notifier, [DbNames]}),
           #worker{ref=Ref, node=Node}
  
positive.code: 
  -record(acc, {
      parent,
      state
  }).
  
  go(Parent, ParentRef, DbName, Timeout) ->
      Notifiers = start_update_notifiers(DbName),
      MonRefs = lists:usort([rexi_utils:server_pid(N) || #worker{node = N} <- Notifiers]),
      RexiMon = rexi_monitor:start(MonRefs),
      MonPid = start_cleanup_monitor(self(), Notifiers),
  
negative.code:     {stop, ok}.
  
  
  handle_error(Node, Reason, #acc{shards = Shards} = Acc) ->
      Rest = lists:filter(fun(#shard{node = N}) -> N /= Node end, Shards),
      case fabric_view:is_progress_possible([{R, nil} || R <- Rest]) of
          true ->
              {ok, Acc#acc{shards = Rest}};
          false ->
              {error, Reason}
      end.
  