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)
| 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()); |
no test coverage detected