public void WillAssignAllSegmentsWeAskForImmediately() { var ranges = Enumerable.Range(0, 500).ToArray(); var assignedSegments = replication.AssignAllEmptySegments(NodeEndpoint.ForTest(1), ReplicationType.Ownership, ranges); Assert.Equal(ranges, assignedSegments); }
public void WillSkipSegmentsThatHasItemsInThem() { var ranges = Enumerable.Range(0, 500).ToArray(); var assignedSegments = replication.AssignAllEmptySegments(NodeEndpoint.ForTest(1), ReplicationType.Ownership, ranges); Assert.Equal(ranges.Skip(1).ToArray(), assignedSegments); }
private List <Segment> AssignAllEmptySegmentsFromEndpoint(List <int> processedSegments) { var remainingSegments = new List <Segment>(); var assignedSegments = otherNode.AssignAllEmptySegments( node.Endpoint, type, segments.Select(x => x.Index).ToArray()); processedSegments.AddRange(assignedSegments); node.DoneReplicatingSegments(type, assignedSegments); log.DebugFormat("{0} empty segments assigned from {1}", assignedSegments.Length, endpoint.Sync); remainingSegments.AddRange( segments.Where(x => assignedSegments.Contains(x.Index) == false) ); return(remainingSegments); }
private void HandleAssignEmpty(StorageMessageUnion wrapper, MessageStreamWriter <StorageMessageUnion> writer) { var segments = replication.AssignAllEmptySegments( wrapper.AssignAllEmptySegmentsRequest.ReplicationEndpoint.GetNodeEndpoint(), wrapper.AssignAllEmptySegmentsRequest.Type == ReplicationType.Backup ? Internal.ReplicationType.Backup : Internal.ReplicationType.Ownership, wrapper.AssignAllEmptySegmentsRequest.SegmentsList.ToArray() ); writer.Write(new StorageMessageUnion.Builder { Type = StorageMessageType.AssignAllEmptySegmentsResponse, AssignAllEmptySegmentsResponse = new AssignAllEmptySegmentsResponseMessage.Builder { AssignedSegmentsList = { segments } }.Build() }.Build()); }