@Override protected Querier createQuerier(Querier.Mode mode, String id, String query, BulletConfig config) { Querier spied = spy(super.createQuerier(mode, id, query, config)); List<Boolean> answers = IntStream.range(0, doneAfter).mapToObj(i -> false) .collect(ArrayList::new, ArrayList::add, ArrayList::addAll); answers.add(true); doAnswer(returnsElementsOf(answers)).when(spied).isDone(); return spied; } }
private void onQuery(Tuple tuple) { String id = tuple.getString(TopologyConstants.ID_POSITION); String query = tuple.getString(TopologyConstants.QUERY_POSITION); if (manager.hasQuery(id)) { log.error("Duplicate for request {} with query {}", id, query); return; } try { Querier querier = createQuerier(Querier.Mode.PARTITION, id, query, config); if (!querier.initialize().isPresent()) { manager.addQuery(id, querier); log.info("Initialized query {}", querier.toString()); return; } } catch (RuntimeException ignored) { } // No need to handle any errors in the Filter Bolt. log.error("Failed to initialize query for request {} with query {}", id, query); }
private void onQuery(Tuple tuple) { String id = tuple.getString(TopologyConstants.ID_POSITION); String query = tuple.getString(TopologyConstants.QUERY_POSITION); if (manager.hasQuery(id)) { log.error("Duplicate for request {} with query {}", id, query); return; } try { Querier querier = createQuerier(Querier.Mode.PARTITION, id, query, config); if (!querier.initialize().isPresent()) { manager.addQuery(id, querier); log.info("Initialized query {}", querier.toString()); return; } } catch (RuntimeException ignored) { } // No need to handle any errors in the Filter Bolt. log.error("Failed to initialize query for request {} with query {}", id, query); }
@Override protected Querier createQuerier(Querier.Mode mode, String id, String query, BulletConfig config) { Querier spied = spy(super.createQuerier(mode, id, query, config)); List<Boolean> answers = IntStream.range(0, limitedAfter).mapToObj(i -> false) .collect(ArrayList::new, ArrayList::add, ArrayList::addAll); answers.add(true); doAnswer(returnsElementsOf(answers)).when(spied).isExceedingRateLimit(); doReturn(error).when(spied).getRateLimitError(); return spied; } }