void setAppendingSegment(SegmentWithState appendingSegment) { Preconditions.checkArgument( appendingSegment.getState() == SegmentState.APPENDING, "segment[%s] is not in the APPENDING state", appendingSegment.getSegmentIdentifier() ); // There should be only one appending segment at any time Preconditions.checkState( this.appendingSegment == null, "WTF?! Current appendingSegment[%s] is not null. " + "Its state must be changed before setting a new appendingSegment[%s]", this.appendingSegment, appendingSegment ); this.appendingSegment = appendingSegment; }
SegmentsOfInterval( Interval interval, @Nullable SegmentWithState appendingSegment, List<SegmentWithState> appendFinishedSegments ) { this.interval = interval; this.appendingSegment = appendingSegment; this.appendFinishedSegments.addAll(appendFinishedSegments); if (appendingSegment != null) { Preconditions.checkArgument( appendingSegment.getState() == SegmentState.APPENDING, "appendingSegment[%s] is not in the APPENDING state", appendingSegment.getSegmentIdentifier() ); } if (appendFinishedSegments .stream() .anyMatch(segmentWithState -> segmentWithState.getState() == SegmentState.APPENDING)) { throw new ISE("Some appendFinishedSegments[%s] is in the APPENDING state", appendFinishedSegments); } }
void add(SegmentWithState segmentWithState) { final SegmentIdWithShardSpec identifier = segmentWithState.getSegmentIdentifier(); final Pair<SegmentWithState, List<SegmentWithState>> pair = intervalToSegments.get(identifier); final List<SegmentWithState> appendFinishedSegments = pair == null || pair.rhs == null ? new ArrayList<>() : pair.rhs; // always keep APPENDING segments for an interval start millis in the front if (segmentWithState.getState() == SegmentState.APPENDING) { if (pair != null && pair.lhs != null) { throw new ISE( "WTF?! there was already an appendingSegment[%s] before adding an appendingSegment[%s]", pair.lhs, segmentWithState ); } intervalToSegments.put(identifier, Pair.of(segmentWithState, appendFinishedSegments)); } else { final SegmentWithState appendingSegment = pair == null ? null : pair.lhs; appendFinishedSegments.add(segmentWithState); intervalToSegments.put(identifier, Pair.of(appendingSegment, appendFinishedSegments)); } }
private void checkSegmentStates(int expectedNumSegmentsInState, SegmentState expectedState) { final SegmentsForSequence segmentsForSequence = driver.getSegments().get("dummy"); Assert.assertNotNull(segmentsForSequence); final List<SegmentWithState> segmentWithStates = segmentsForSequence .allSegmentStateStream() .filter(segmentWithState -> segmentWithState.getState() == expectedState) .collect(Collectors.toList()); Assert.assertEquals(expectedNumSegmentsInState, segmentWithStates.size()); }
void setAppendingSegment(SegmentWithState appendingSegment) { Preconditions.checkArgument( appendingSegment.getState() == SegmentState.APPENDING, "segment[%s] is not in the APPENDING state", appendingSegment.getSegmentIdentifier() ); // There should be only one appending segment at any time Preconditions.checkState( this.appendingSegment == null, "WTF?! Current appendingSegment[%s] is not null. " + "Its state must be changed before setting a new appendingSegment[%s]", this.appendingSegment, appendingSegment ); this.appendingSegment = appendingSegment; }
SegmentsOfInterval( Interval interval, @Nullable SegmentWithState appendingSegment, List<SegmentWithState> appendFinishedSegments ) { this.interval = interval; this.appendingSegment = appendingSegment; this.appendFinishedSegments.addAll(appendFinishedSegments); if (appendingSegment != null) { Preconditions.checkArgument( appendingSegment.getState() == SegmentState.APPENDING, "appendingSegment[%s] is not in the APPENDING state", appendingSegment.getSegmentIdentifier() ); } if (appendFinishedSegments .stream() .anyMatch(segmentWithState -> segmentWithState.getState() == SegmentState.APPENDING)) { throw new ISE("Some appendFinishedSegments[%s] is in the APPENDING state", appendFinishedSegments); } }
void add(SegmentWithState segmentWithState) { final SegmentIdentifier identifier = segmentWithState.getSegmentIdentifier(); final Pair<SegmentWithState, List<SegmentWithState>> pair = intervalToSegments.get(identifier); final List<SegmentWithState> appendFinishedSegments = pair == null || pair.rhs == null ? new ArrayList<>() : pair.rhs; // always keep APPENDING segments for an interval start millis in the front if (segmentWithState.getState() == SegmentState.APPENDING) { if (pair != null && pair.lhs != null) { throw new ISE( "WTF?! there was already an appendingSegment[%s] before adding an appendingSegment[%s]", pair.lhs, segmentWithState ); } intervalToSegments.put(identifier, Pair.of(segmentWithState, appendFinishedSegments)); } else { final SegmentWithState appendingSegment = pair == null ? null : pair.lhs; appendFinishedSegments.add(segmentWithState); intervalToSegments.put(identifier, Pair.of(appendingSegment, appendFinishedSegments)); } }