From 2fe40712c655e5af1c8aaea4a6674e599c7436dd Mon Sep 17 00:00:00 2001 From: Peter van der Zee <209817+pvdz@users.noreply.github.com> Date: Thu, 23 Apr 2020 14:43:50 +0200 Subject: [PATCH] chore(gatsby): count sift hits in telemetry (#23416) * chore(gatsby): count sift hits in telemetry We want to know how frequent the fast indexes fail to find anything when they're actually supposed to find something. This is currently not tracked and leads to skewed results. By counting how frequent Sift finds something when fast indexes fail or bail, we can get more relevant insight into how well fast indexes are actually performing, and/or whether we need to start thinking about eliminating Sift altogether. tbd. * Inverse if-order --- packages/gatsby/src/query/graphql-runner.ts | 4 ++++ packages/gatsby/src/redux/run-sift.js | 15 ++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/gatsby/src/query/graphql-runner.ts b/packages/gatsby/src/query/graphql-runner.ts index 011c96ccf6e8c..1faf02f7654ae 100644 --- a/packages/gatsby/src/query/graphql-runner.ts +++ b/packages/gatsby/src/query/graphql-runner.ts @@ -28,6 +28,7 @@ interface IGraphQLRunnerStats { totalRunQuery: number totalPluralRunQuery: number totalIndexHits: number + totalSiftHits: number totalNonSingleFilters: number comparatorsUsed: Map uniqueFilterPaths: Set @@ -41,6 +42,7 @@ interface IGraphQLRunnerStatResults { totalRunQuery: number totalPluralRunQuery: number totalIndexHits: number + totalSiftHits: number totalNonSingleFilters: number comparatorsUsed: Array<{ comparator: string; amount: number }> uniqueFilterPaths: number @@ -89,6 +91,7 @@ export default class GraphQLRunner { totalRunQuery: 0, totalPluralRunQuery: 0, totalIndexHits: 0, + totalSiftHits: 0, totalNonSingleFilters: 0, comparatorsUsed: new Map(), uniqueFilterPaths: new Set(), @@ -141,6 +144,7 @@ export default class GraphQLRunner { totalRunQuery: this.stats.totalRunQuery, totalPluralRunQuery: this.stats.totalPluralRunQuery, totalIndexHits: this.stats.totalIndexHits, + totalSiftHits: this.stats.totalSiftHits, totalNonSingleFilters: this.stats.totalNonSingleFilters, comparatorsUsed: comparatorsUsedObj, uniqueFilterPaths: this.stats.uniqueFilterPaths.size, diff --git a/packages/gatsby/src/redux/run-sift.js b/packages/gatsby/src/redux/run-sift.js index 0f3f1140ce963..242fcdfa76bb0 100644 --- a/packages/gatsby/src/redux/run-sift.js +++ b/packages/gatsby/src/redux/run-sift.js @@ -451,7 +451,20 @@ const applyFilters = ( return result } - return filterWithSift(filters, firstOnly, nodeTypeNames, resolvedFields) + const siftResult = filterWithSift( + filters, + firstOnly, + nodeTypeNames, + resolvedFields + ) + + if (stats) { + if (!siftResult || siftResult.length === 0) { + stats.totalSiftHits++ + } + } + + return siftResult } const filterToStats = (