private void checkReadyForMerge(Segments<CubeSegment> mergingSegments) { // check if the segments to be merged are continuous for (int i = 0; i < mergingSegments.size() - 1; i++) { if (!mergingSegments.get(i).getSegRange().connects(mergingSegments.get(i + 1).getSegRange())) throw new IllegalStateException("Merging segments must not have gaps between " + mergingSegments.get(i) + " and " + mergingSegments.get(i + 1)); } // check if the segments to be merged are not empty List<String> emptySegment = Lists.newArrayList(); for (CubeSegment seg : mergingSegments) { if (seg.getSizeKB() == 0 && seg.getInputRecords() == 0) { emptySegment.add(seg.getName()); } } if (emptySegment.size() > 0) { throw new IllegalArgumentException( "Empty cube segment found, couldn't merge unless 'forceMergeEmptySegment' set to true: " + emptySegment); } }
CubeSegment first = segments.get(i); CubeSegment second = segments.get(i + 1); if (first.getSegRange().connects(second.getSegRange())) continue;
public Pair<T, T> findMergeOffsetsByDateRange(TSRange tsRange, long skipSegDateRangeCap) { // must be offset cube Segments result = new Segments(); for (ISegment seg : this) { // include if date range overlaps if (tsRange.overlaps(seg.getTSRange())) { // reject too big segment if (seg.getTSRange().duration() > skipSegDateRangeCap) break; // reject holes if (result.size() > 0 && !result.getLast().getSegRange().connects(seg.getSegRange())) break; result.add(seg); } } if (result.size() <= 1) return null; else return (Pair<T, T>) Pair.newPair(result.getFirst(), result.getLast()); }
private void checkReadyForMerge(Segments<CubeSegment> mergingSegments) { // check if the segments to be merged are continuous for (int i = 0; i < mergingSegments.size() - 1; i++) { if (!mergingSegments.get(i).getSegRange().connects(mergingSegments.get(i + 1).getSegRange())) throw new IllegalStateException("Merging segments must not have gaps between " + mergingSegments.get(i) + " and " + mergingSegments.get(i + 1)); } // check if the segments to be merged are not empty List<String> emptySegment = Lists.newArrayList(); for (CubeSegment seg : mergingSegments) { if (seg.getSizeKB() == 0 && seg.getInputRecords() == 0) { emptySegment.add(seg.getName()); } } if (emptySegment.size() > 0) { throw new IllegalArgumentException( "Empty cube segment found, couldn't merge unless 'forceMergeEmptySegment' set to true: " + emptySegment); } }
CubeSegment first = segments.get(i); CubeSegment second = segments.get(i + 1); if (first.getSegRange().connects(second.getSegRange())) continue;
public Pair<T, T> findMergeOffsetsByDateRange(TSRange tsRange, long skipSegDateRangeCap) { // must be offset cube Segments result = new Segments(); for (ISegment seg : this) { // include if date range overlaps if (tsRange.overlaps(seg.getTSRange())) { // reject too big segment if (seg.getTSRange().duration() > skipSegDateRangeCap) break; // reject holes if (result.size() > 0 && !result.getLast().getSegRange().connects(seg.getSegRange())) break; result.add(seg); } } if (result.size() <= 1) return null; else return (Pair<T, T>) Pair.newPair(result.getFirst(), result.getLast()); }