private SegmentIdWithShardSpec tryAllocateFirstSegment(TaskActionToolbox toolbox, Task task, Interval rowInterval) { // No existing segments for this row, but there might still be nearby ones that conflict with our preferred // segment granularity. Try that first, and then progressively smaller ones if it fails. final List<Interval> tryIntervals = Granularity.granularitiesFinerThan(preferredSegmentGranularity) .stream() .map(granularity -> granularity.bucket(timestamp)) .collect(Collectors.toList()); for (Interval tryInterval : tryIntervals) { if (tryInterval.contains(rowInterval)) { final SegmentIdWithShardSpec identifier = tryAllocate(toolbox, task, tryInterval, rowInterval, false); if (identifier != null) { return identifier; } } } return null; }
@Test public void testGranularitiesFinerThanHour() { Assert.assertEquals( ImmutableList.of( Granularities.HOUR, Granularities.THIRTY_MINUTE, Granularities.FIFTEEN_MINUTE, Granularities.TEN_MINUTE, Granularities.FIVE_MINUTE, Granularities.MINUTE, Granularities.SECOND ), Granularity.granularitiesFinerThan(Granularities.HOUR) ); }
@Test public void testGranularitiesFinerThanDay() { Assert.assertEquals( ImmutableList.of( Granularities.DAY, Granularities.SIX_HOUR, Granularities.HOUR, Granularities.THIRTY_MINUTE, Granularities.FIFTEEN_MINUTE, Granularities.TEN_MINUTE, Granularities.FIVE_MINUTE, Granularities.MINUTE, Granularities.SECOND ), Granularity.granularitiesFinerThan(Granularities.DAY) ); }
private SegmentIdentifier tryAllocateFirstSegment(TaskActionToolbox toolbox, Task task, Interval rowInterval) { // No existing segments for this row, but there might still be nearby ones that conflict with our preferred // segment granularity. Try that first, and then progressively smaller ones if it fails. final List<Interval> tryIntervals = Granularity.granularitiesFinerThan(preferredSegmentGranularity) .stream() .map(granularity -> granularity.bucket(timestamp)) .collect(Collectors.toList()); for (Interval tryInterval : tryIntervals) { if (tryInterval.contains(rowInterval)) { final SegmentIdentifier identifier = tryAllocate(toolbox, task, tryInterval, rowInterval, false); if (identifier != null) { return identifier; } } } return null; }