Enhance Deprecated MetricQuery(v1) getValues querying (#9003)

This commit is contained in:
Hper 2022-05-07 22:57:09 +08:00 committed by GitHub
parent 9eae2a53c4
commit 7b99289eab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 7 deletions

View File

@ -43,6 +43,7 @@
* Add "execution_hint": "map", "collect_mode": "breadth_first" for aggregation and topology query to improve 5-10x performance.
* Clean up scroll contexts after used.
* Support autocomplete tags in logs query.
* Enhance Deprecated MetricQuery(v1) getValues querying to asynchronous concurrency query
#### UI

View File

@ -22,7 +22,9 @@ import graphql.kickstart.tools.GraphQLQueryResolver;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.skywalking.oap.query.graphql.type.BatchMetricConditions;
import org.apache.skywalking.oap.server.core.query.input.Duration;
import org.apache.skywalking.oap.server.core.query.input.Entity;
@ -40,6 +42,7 @@ import org.apache.skywalking.oap.server.library.module.ModuleManager;
* @since 8.0.0 This query is replaced by {@link MetricsQuery}
*/
@Deprecated
@Slf4j
public class MetricQuery implements GraphQLQueryResolver {
private MetricsQuery query;
@ -59,17 +62,21 @@ public class MetricQuery implements GraphQLQueryResolver {
kv.setValue(query.readMetricsValue(condition, duration));
values.addKVInt(kv);
} else {
for (final String id : metrics.getIds()) {
KVInt kv = new KVInt();
kv.setId(id);
List<KVInt> ints = metrics.getIds().parallelStream().map(id -> {
MetricsCondition condition = new MetricsCondition();
condition.setName(metrics.getName());
condition.setEntity(new MockEntity(id));
try {
KVInt kv = new KVInt();
kv.setId(id);
kv.setValue(query.readMetricsValue(condition, duration));
return kv;
} catch (IOException e) {
throw new RuntimeException(e);
}
}).collect(Collectors.toList());
ints.forEach(v -> values.addKVInt(v));
kv.setValue(query.readMetricsValue(condition, duration));
values.addKVInt(kv);
}
}
return values;