@Override public Sequence<T> run(final Query<T> query) { final Closeable closeable = adapter.increment(); try { final Sequence<T> baseSequence = factory.createRunner(adapter).run(query); return new ResourceClosingSequence<T>(baseSequence, closeable); } catch (RuntimeException e) { Closeables.closeQuietly(closeable); throw e; } } }
@SuppressWarnings("unchecked") public static Sequence run(Query query, QueryableIndex index) { return findFactory(query).createRunner(new QueryableIndexSegment("", index)).run(query, null); }
private static <T> Sequence<T> executeQuery(final Injector injector, final QueryableIndex index, final Query<T> query) { final QueryRunnerFactoryConglomerate conglomerate = injector.getInstance(QueryRunnerFactoryConglomerate.class); final QueryRunnerFactory factory = conglomerate.findFactory(query); final QueryRunner<T> runner = factory.createRunner(new QueryableIndexSegment("segment", index)); final Sequence results = factory.getToolchest().mergeResults( factory.mergeRunners(MoreExecutors.sameThreadExecutor(), ImmutableList.<QueryRunner>of(runner)) ).run(QueryPlus.wrap(query), Maps.<String, Object>newHashMap()); return (Sequence<T>) results; }
@Override public Sequence<T> run(final QueryPlus<T> queryPlus, Map<String, Object> responseContext) { if (adapter.increment()) { try { final Sequence<T> baseSequence = factory.createRunner(adapter).run(queryPlus, responseContext); return Sequences.withBaggage(baseSequence, adapter.decrementOnceCloseable()); } catch (Throwable t) { try { adapter.decrement(); } catch (Exception e) { t.addSuppressed(e); } throw t; } } else { // Segment was closed before we had a chance to increment the reference count return new ReportTimelineMissingSegmentQueryRunner<T>(descriptor).run(queryPlus, responseContext); } } }