mirror of
https://github.com/elastic/elasticsearch.git
synced 2025-04-24 23:27:25 -04:00
Profile the fetch phase (#77064)
This adds profiling to the fetch phase so we can tell when fetching is slower than we'd like and we can tell which portion of the fetch is slow. The output includes which stored fields were loaded, how long it took to load stored fields, which fetch sub-phases were run, and how long those fetch sub-phases took. Closes #75892 * Skip bwc * Don't compare fetch profiles * Use passed one * no npe * Do last rename * Move method down * serialization tests * Fix sneaky serialization * Test for sneaky bug * license header * Document * Fix test * newline * Restore assertion * unit test merging * Handle inner hits * Fixup * Revert unneeded * Revert inner hits profiling * Fix names * Fixup names * Move results building * Drop loaded_nested * Checkstyle * Fixup more * Finish writeable cleanup Add unit tests for merge * Remove null checking builder * Fix wire mistake How did this pass before?! * Rename * Remove funny builder * Remove name munging
This commit is contained in:
parent
97f42aabbb
commit
c2c0165fd2
54 changed files with 1864 additions and 543 deletions
|
@ -97,10 +97,13 @@ import java.util.concurrent.TimeUnit;
|
|||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
import static org.hamcrest.CoreMatchers.equalTo;
|
||||
import static org.hamcrest.CoreMatchers.instanceOf;
|
||||
import static org.hamcrest.Matchers.empty;
|
||||
import static org.hamcrest.Matchers.greaterThan;
|
||||
import static org.hamcrest.Matchers.greaterThanOrEqualTo;
|
||||
import static org.hamcrest.Matchers.not;
|
||||
|
||||
/**
|
||||
* This test class executes twice, first against the remote cluster, and then against another cluster that has the remote cluster
|
||||
|
@ -405,6 +408,10 @@ public class CCSDuelIT extends ESRestTestCase {
|
|||
duelSearch(searchRequest, response -> {
|
||||
assertHits(response);
|
||||
assertFalse(response.getProfileResults().isEmpty());
|
||||
assertThat(
|
||||
response.getProfileResults().values().stream().filter(sr -> sr.getFetchPhase() != null).collect(toList()),
|
||||
not(empty())
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -813,6 +820,14 @@ public class CCSDuelIT extends ESRestTestCase {
|
|||
List<Map<String, Object>> shards = (List <Map<String, Object>>)profile.get("shards");
|
||||
for (Map<String, Object> shard : shards) {
|
||||
replaceProfileTime(shard);
|
||||
/*
|
||||
* The way we try to reduce round trips is by fetching all
|
||||
* of the results we could possibly need from the remote
|
||||
* cluster and then merging *those* together locally. This
|
||||
* will end up fetching more documents total. So we can't
|
||||
* really compare the fetch profiles here.
|
||||
*/
|
||||
shard.remove("fetch");
|
||||
}
|
||||
}
|
||||
return responseMap;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue