@Override @SuppressWarnings("unchecked") public Iterable<QueryRunner<T>> apply(SegmentDescriptor input) { final PartitionHolder<ReferenceCountingSegment> entry = timeline.findEntry( input.getInterval(), input.getVersion() ); if (entry == null) { return Collections.singletonList( new ReportTimelineMissingSegmentQueryRunner<T>(input)); } final PartitionChunk<ReferenceCountingSegment> chunk = entry.getChunk(input.getPartitionNumber()); if (chunk == null) { return Collections.singletonList(new ReportTimelineMissingSegmentQueryRunner<T>(input)); } final ReferenceCountingSegment adapter = chunk.getObject(); return Collections.singletonList( buildAndDecorateQueryRunner(factory, toolChest, adapter, input, cpuTimeAccumulator) ); } }
@Override public Iterable<QueryRunner<T>> apply(final SegmentDescriptor descriptor) { final PartitionHolder<Segment> holder = timeline.findEntry( descriptor.getInterval(), descriptor.getVersion() ); return Iterables.transform( holder, new Function<PartitionChunk<Segment>, QueryRunner<T>>() { @Override public QueryRunner<T> apply(PartitionChunk<Segment> chunk) { return new SpecificSegmentQueryRunner<T>( factory.createRunner(chunk.getObject()), new SpecificSegmentSpec(descriptor) ); } } ); } }
@Test public void testFindEntry() { Assert.assertEquals( new ImmutablePartitionHolder<Integer>(new PartitionHolder<Integer>(makeSingle(1))), timeline.findEntry(Intervals.of("2011-10-01/2011-10-02"), "1") ); Assert.assertEquals( new ImmutablePartitionHolder<Integer>(new PartitionHolder<Integer>(makeSingle(1))), timeline.findEntry(Intervals.of("2011-10-01/2011-10-01T10"), "1") ); Assert.assertEquals( new ImmutablePartitionHolder<Integer>(new PartitionHolder<Integer>(makeSingle(1))), timeline.findEntry(Intervals.of("2011-10-01T02/2011-10-02"), "1") ); Assert.assertEquals( new ImmutablePartitionHolder<Integer>(new PartitionHolder<Integer>(makeSingle(1))), timeline.findEntry(Intervals.of("2011-10-01T04/2011-10-01T17"), "1") ); Assert.assertEquals( null, timeline.findEntry(Intervals.of("2011-10-01T04/2011-10-01T17"), "2") ); Assert.assertEquals( null, timeline.findEntry(Intervals.of("2011-10-01T04/2011-10-02T17"), "1") ); }
@Test public void testFindEntryWithOverlap() { timeline = makeStringIntegerTimeline(); add("2011-01-01/2011-01-10", "1", 1); add("2011-01-02/2011-01-05", "2", 1); Assert.assertEquals( new ImmutablePartitionHolder<Integer>(new PartitionHolder<Integer>(makeSingle(1))), timeline.findEntry(Intervals.of("2011-01-02T02/2011-01-04"), "1") ); }
@Override public QueryRunner<T> apply(final SegmentDescriptor descriptor) final PartitionHolder<Sink> holder = sinkTimeline.findEntry( descriptor.getInterval(), descriptor.getVersion()
final VersionedIntervalTimeline<String, ReferenceCountingSegment> loadedIntervals = dataSourceState.getTimeline(); final PartitionHolder<ReferenceCountingSegment> entry = loadedIntervals.findEntry( segment.getInterval(), segment.getVersion()
@Override @SuppressWarnings("unchecked") public Iterable<QueryRunner<T>> apply(SegmentDescriptor input) { final PartitionHolder<ReferenceCountingSegment> entry = timeline.findEntry( input.getInterval(), input.getVersion() ); if (entry == null) { return Collections.singletonList( new ReportTimelineMissingSegmentQueryRunner<T>(input)); } final PartitionChunk<ReferenceCountingSegment> chunk = entry.getChunk(input.getPartitionNumber()); if (chunk == null) { return Collections.singletonList(new ReportTimelineMissingSegmentQueryRunner<T>(input)); } final ReferenceCountingSegment adapter = chunk.getObject(); return Collections.singletonList( buildAndDecorateQueryRunner(factory, toolChest, adapter, input, cpuTimeAccumulator) ); } }
@Override public QueryRunner<T> apply(final SegmentDescriptor descriptor) final PartitionHolder<Sink> holder = sinkTimeline.findEntry( descriptor.getInterval(), descriptor.getVersion()
final VersionedIntervalTimeline<String, ReferenceCountingSegment> loadedIntervals = dataSourceState.getTimeline(); final PartitionHolder<ReferenceCountingSegment> entry = loadedIntervals.findEntry( segment.getInterval(), segment.getVersion()