mirror of
https://github.com/elastic/elasticsearch.git
synced 2025-06-30 10:23:41 -04:00
Fix and simplify serialization of shard profile results
This commit is contained in:
parent
461da25080
commit
22e631fe64
3 changed files with 23 additions and 25 deletions
|
@ -82,29 +82,12 @@ public class InternalProfileShardResult implements ProfileShardResult, Streamabl
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<InternalProfileShardResult> readProfileShardResults(StreamInput in) throws IOException {
|
|
||||||
int size = in.readInt();
|
|
||||||
List<InternalProfileShardResult> results = new ArrayList<>(size);
|
|
||||||
for (int i = 0; i < size; i++) {
|
|
||||||
InternalProfileShardResult result = readProfileShardResult(in);
|
|
||||||
results.add(result);
|
|
||||||
}
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static InternalProfileShardResult readProfileShardResult(StreamInput in) throws IOException {
|
public static InternalProfileShardResult readProfileShardResult(StreamInput in) throws IOException {
|
||||||
InternalProfileShardResult newShardResults = new InternalProfileShardResult();
|
InternalProfileShardResult newShardResults = new InternalProfileShardResult();
|
||||||
newShardResults.readFrom(in);
|
newShardResults.readFrom(in);
|
||||||
return newShardResults;
|
return newShardResults;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void writeProfileShardResults(List<InternalProfileShardResult> results, StreamOutput out) throws IOException {
|
|
||||||
out.writeInt(results.size());
|
|
||||||
for (InternalProfileShardResult result : results) {
|
|
||||||
result.writeTo(out);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void readFrom(StreamInput in) throws IOException {
|
public void readFrom(StreamInput in) throws IOException {
|
||||||
|
|
||||||
|
|
|
@ -7,10 +7,7 @@ import org.elasticsearch.common.xcontent.ToXContent;
|
||||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Collections;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public final class InternalProfileShardResults implements Streamable, ToXContent{
|
public final class InternalProfileShardResults implements Streamable, ToXContent{
|
||||||
|
@ -45,11 +42,18 @@ public final class InternalProfileShardResults implements Streamable, ToXContent
|
||||||
@Override
|
@Override
|
||||||
public void readFrom(StreamInput in) throws IOException {
|
public void readFrom(StreamInput in) throws IOException {
|
||||||
int size = in.readInt();
|
int size = in.readInt();
|
||||||
|
|
||||||
shardResults = new HashMap<>(size);
|
shardResults = new HashMap<>(size);
|
||||||
|
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
String key = in.readString();
|
String key = in.readString();
|
||||||
List<InternalProfileShardResult> shardResult = InternalProfileShardResult.readProfileShardResults(in);
|
int shardResultsSize = in.readInt();
|
||||||
|
|
||||||
|
List<InternalProfileShardResult> shardResult = new ArrayList<>(shardResultsSize);
|
||||||
|
|
||||||
|
for (int j = 0; j < shardResultsSize; j++) {
|
||||||
|
InternalProfileShardResult result = InternalProfileShardResult.readProfileShardResult(in);
|
||||||
|
shardResult.add(result);
|
||||||
|
}
|
||||||
shardResults.put(key, shardResult);
|
shardResults.put(key, shardResult);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -59,6 +63,8 @@ public final class InternalProfileShardResults implements Streamable, ToXContent
|
||||||
out.writeInt(shardResults.size());
|
out.writeInt(shardResults.size());
|
||||||
for (Map.Entry<String, List<InternalProfileShardResult>> entry : shardResults.entrySet()) {
|
for (Map.Entry<String, List<InternalProfileShardResult>> entry : shardResults.entrySet()) {
|
||||||
out.writeString(entry.getKey());
|
out.writeString(entry.getKey());
|
||||||
|
out.writeInt(entry.getValue().size());
|
||||||
|
|
||||||
for (InternalProfileShardResult result : entry.getValue()) {
|
for (InternalProfileShardResult result : entry.getValue()) {
|
||||||
result.writeTo(out);
|
result.writeTo(out);
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,7 @@ import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
|
||||||
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregatorStreams;
|
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregatorStreams;
|
||||||
import org.elasticsearch.search.aggregations.pipeline.SiblingPipelineAggregator;
|
import org.elasticsearch.search.aggregations.pipeline.SiblingPipelineAggregator;
|
||||||
import org.elasticsearch.search.profile.InternalProfileShardResult;
|
import org.elasticsearch.search.profile.InternalProfileShardResult;
|
||||||
|
import org.elasticsearch.search.profile.InternalProfileShardResults;
|
||||||
import org.elasticsearch.search.suggest.Suggest;
|
import org.elasticsearch.search.suggest.Suggest;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -214,7 +215,12 @@ public class QuerySearchResult extends QuerySearchResultProvider {
|
||||||
|
|
||||||
// nocommit TODO need version check here?
|
// nocommit TODO need version check here?
|
||||||
if (in.readBoolean()) {
|
if (in.readBoolean()) {
|
||||||
profileShardResults = InternalProfileShardResult.readProfileShardResults(in);
|
int profileSize = in.readVInt();
|
||||||
|
profileShardResults = new ArrayList<>(profileSize);
|
||||||
|
for (int i = 0; i < profileSize; i++) {
|
||||||
|
InternalProfileShardResult result = InternalProfileShardResult.readProfileShardResult(in);
|
||||||
|
profileShardResults.add(result);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -260,7 +266,10 @@ public class QuerySearchResult extends QuerySearchResultProvider {
|
||||||
out.writeBoolean(false);
|
out.writeBoolean(false);
|
||||||
} else {
|
} else {
|
||||||
out.writeBoolean(true);
|
out.writeBoolean(true);
|
||||||
InternalProfileShardResult.writeProfileShardResults(profileShardResults, out);
|
out.writeVInt(profileShardResults.size());
|
||||||
|
for (InternalProfileShardResult shardResult : profileShardResults) {
|
||||||
|
shardResult.writeTo(out);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue