public long getTSStart() { Segments<T> readySegs = getSegments(SegmentStatusEnum.READY); long startTime = Long.MAX_VALUE; for (ISegment seg : readySegs) { startTime = Math.min(startTime, seg.getTSRange().start.v); } return startTime; }
public long getTSEnd() { Segments<T> readySegs = getSegments(SegmentStatusEnum.READY); long endTime = Long.MIN_VALUE; for (ISegment seg : readySegs) { endTime = Math.max(endTime, seg.getTSRange().end.v); } return endTime; }
public void removeLatestSegmentByVolatileRange(Segments<T> segs, long volatileRange) { if(volatileRange <= 0) { return; } long latestSegEndTs = Long.MIN_VALUE; for(T seg: segs) { latestSegEndTs = Math.max(latestSegEndTs, seg.getTSRange().end.v); } Segments volatileSegs = new Segments(); for(T seg: segs) { if(seg.getTSRange().end.v + volatileRange > latestSegEndTs) { logger.warn("segment in volatile range: seg:" + seg.toString() + "rangeStart:" + seg.getTSRange().start.v + ", rangeEnd" + seg.getTSRange().end.v); volatileSegs.add(seg); } } segs.removeAll(volatileSegs); }
public T getLatestReadySegment() { T latest = null; for (int i = this.size() - 1; i >= 0; i--) { T seg = this.get(i); if (seg.getStatus() != SegmentStatusEnum.READY) continue; if (latest == null || latest.getTSRange().end.v < seg.getTSRange().end.v) { latest = seg; } } return latest; }
public Pair<ByteArray, ByteArray> getSegmentStartAndEnd(int index) { TSRange tsRange = segment.getTSRange(); ByteArray start; if (!tsRange.start.isMin) { start = encodeTime(tsRange.start.v, index, 1); } else { start = new ByteArray(); } ByteArray end; if (!tsRange.end.isMax) { end = encodeTime(tsRange.end.v, index, -1); } else { end = new ByteArray(); } return Pair.newPair(start, end); }
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()); }
TSRange tsRange = new TSRange(seg.getTSRange().start.v, seg.getTSRange().start.v + toMergeRange); if (p != null && p.getSecond().getTSRange().end.v - p.getFirst().getTSRange().start.v >= toMergeRange) return new SegmentRange(p.getFirst().getSegRange().start.v, p.getSecond().getSegRange().end.v);
public long getTSStart() { Segments<T> readySegs = getSegments(SegmentStatusEnum.READY); long startTime = Long.MAX_VALUE; for (ISegment seg : readySegs) { startTime = Math.min(startTime, seg.getTSRange().start.v); } return startTime; }
public long getTSEnd() { Segments<T> readySegs = getSegments(SegmentStatusEnum.READY); long endTime = Long.MIN_VALUE; for (ISegment seg : readySegs) { endTime = Math.max(endTime, seg.getTSRange().end.v); } return endTime; }
public void removeLatestSegmentByVolatileRange(Segments<T> segs, long volatileRange) { if(volatileRange <= 0) { return; } long latestSegEndTs = Long.MIN_VALUE; for(T seg: segs) { latestSegEndTs = Math.max(latestSegEndTs, seg.getTSRange().end.v); } Segments volatileSegs = new Segments(); for(T seg: segs) { if(seg.getTSRange().end.v + volatileRange > latestSegEndTs) { logger.warn("segment in volatile range: seg:" + seg.toString() + "rangeStart:" + seg.getTSRange().start.v + ", rangeEnd" + seg.getTSRange().end.v); volatileSegs.add(seg); } } segs.removeAll(volatileSegs); }
public T getLatestReadySegment() { T latest = null; for (int i = this.size() - 1; i >= 0; i--) { T seg = this.get(i); if (seg.getStatus() != SegmentStatusEnum.READY) continue; if (latest == null || latest.getTSRange().end.v < seg.getTSRange().end.v) { latest = seg; } } return latest; }
public Pair<ByteArray, ByteArray> getSegmentStartAndEnd(int index) { TSRange tsRange = segment.getTSRange(); ByteArray start; if (!tsRange.start.isMin) { start = encodeTime(tsRange.start.v, index, 1); } else { start = new ByteArray(); } ByteArray end; if (!tsRange.end.isMax) { end = encodeTime(tsRange.end.v, index, -1); } else { end = new ByteArray(); } return Pair.newPair(start, end); }
TSRange tsRange = new TSRange(seg.getTSRange().start.v, seg.getTSRange().start.v + toMergeRange); if (p != null && p.getSecond().getTSRange().end.v - p.getFirst().getTSRange().start.v >= toMergeRange) return new SegmentRange(p.getFirst().getSegRange().start.v, p.getSecond().getSegRange().end.v);
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()); }