MCPcopy Index your code
hub / github.com/OpenTSDB/opentsdb / processLookup

Method processLookup

src/tsd/SearchRpc.java:174–297  ·  view source on GitHub ↗

Processes a lookup query against the tsdb-meta table, returning (and resolving) the TSUIDs of any series that matched the query. @param tsdb The TSDB to which we belong @param query The HTTP query to work with @param search_query A search query configured with at least a metric or a list of tag pair

(final TSDB tsdb, final HttpQuery query, 
      final SearchQuery search_query)

Source from the content-addressed store, hash-verified

172 * @since 2.1
173 */
174 private void processLookup(final TSDB tsdb, final HttpQuery query,
175 final SearchQuery search_query) {
176 if (search_query.getMetric() == null &&
177 (search_query.getTags() == null || search_query.getTags().size() < 1)) {
178 throw new BadRequestException(
179 "Missing metric and tags. Please supply at least one value.");
180 }
181 final long start = System.currentTimeMillis();
182
183 class MetricCB implements Callback<Object, String> {
184 final Map<String, Object> series;
185 MetricCB(final Map<String, Object> series) {
186 this.series = series;
187 }
188
189 @Override
190 public Object call(final String name) throws Exception {
191 series.put("metric", name);
192 return null;
193 }
194 }
195
196 class TagsCB implements Callback<Object, HashMap<String, String>> {
197 final Map<String, Object> series;
198 TagsCB(final Map<String, Object> series) {
199 this.series = series;
200 }
201
202 @Override
203 public Object call(final HashMap<String, String> names) throws Exception {
204 series.put("tags", names);
205 return null;
206 }
207 }
208
209 class Serialize implements Callback<Object, ArrayList<Object>> {
210 final List<Object> results;
211 Serialize(final List<Object> results) {
212 this.results = results;
213 }
214
215 @Override
216 public Object call(final ArrayList<Object> ignored) throws Exception {
217 search_query.setResults(results);
218 search_query.setTime(System.currentTimeMillis() - start);
219 query.sendReply(query.serializer().formatSearchResultsV1(search_query));
220 return null;
221 }
222 }
223
224 class LookupCB implements Callback<Deferred<Object>, List<byte[]>> {
225 @Override
226 public Deferred<Object> call(final List<byte[]> tsuids) throws Exception {
227 final List<Object> results = new ArrayList<Object>(tsuids.size());
228 search_query.setTotalResults(tsuids.size());
229
230 final ArrayList<Deferred<Object>> deferreds =
231 new ArrayList<Deferred<Object>>(tsuids.size());

Callers 1

executeMethod · 0.95

Calls 5

lookupAsyncMethod · 0.80
getTagsMethod · 0.65
sizeMethod · 0.65
getMetricMethod · 0.45
currentTimeMillisMethod · 0.45

Tested by

no test coverage detected