0

Add IsCloningDataFinishedBeforeResponseComplete histogram

This is a follow up for crrev.com/c/6101238. To ensure if the
speculative fix introduced in crrev.com/c/6101238 actually works, and
understand how often the case happens, this CL adds the new boolean
metrics.

Bug: 384414080
Change-Id: I25d75a1408a69b5fe4752b9714913084308eeb17
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6096624
Reviewed-by: Takashi Toyoshima <toyoshim@chromium.org>
Reviewed-by: Keita Suzuki <suzukikeita@chromium.org>
Commit-Queue: Shunya Shishido <sisidovski@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1397774}
This commit is contained in:
Shunya Shishido
2024-12-18 00:42:53 -08:00
committed by Chromium LUCI CQ
parent 9ba2ac0a23
commit dae92c40de
2 changed files with 36 additions and 0 deletions
content/common/service_worker
tools/metrics/histograms/metadata/service

@ -33,6 +33,17 @@ const char kMainResourceHistogramForRaceNetworkFetchEvent[] =
"ServiceWorker.FetchEvent.MainResource.RaceNetworkRequest";
const char kSubresourceHistogramForRaceNetworkFetchEvent[] =
"ServiceWorker.FetchEvent.Subresource.RaceNetworkRequest";
void RecordRaceNetworkRequestCloningResponseForFetchHandlerHistogram(
bool is_main_resource,
bool is_cloning_data_finished_before_response_complete) {
base::UmaHistogramBoolean(
base::StrCat({is_main_resource
? kMainResourceHistogramForRaceNetworkFetchEvent
: kSubresourceHistogramForRaceNetworkFetchEvent,
".IsCloningDataFinishedBeforeResponseComplete"}),
is_cloning_data_finished_before_response_complete);
}
} // namespace
ServiceWorkerRaceNetworkRequestURLLoaderClient::
@ -382,6 +393,9 @@ void ServiceWorkerRaceNetworkRequestURLLoaderClient::CompleteResponse() {
// ServiceWorkerStaticRouterRaceNetworkRequestPerformanceImprovement feature
// is enabled.
forwarding_client_->OnComplete(completion_status_.value());
RecordRaceNetworkRequestCloningResponseForFetchHandlerHistogram(
is_main_resource_,
/*is_cloning_data_finished_before_response_complete=*/true);
}
}
@ -689,6 +703,9 @@ void ServiceWorkerRaceNetworkRequestURLLoaderClient::
// completed as well.
forwarding_client_->OnComplete(completion_status_.value());
write_buffer_manager_for_fetch_handler_.ResetProducer();
RecordRaceNetworkRequestCloningResponseForFetchHandlerHistogram(
is_main_resource_,
/*is_cloning_data_finished_before_response_complete=*/false);
}
}

@ -456,6 +456,25 @@ chromium-metrics-reviews@google.com.
</token>
</histogram>
<histogram
name="ServiceWorker.FetchEvent.{Resource}.RaceNetworkRequest.IsCloningDataFinishedBeforeResponseComplete"
enum="Boolean" expires_after="2025-05-11">
<owner>sisidovski@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Recorded as true when the data cloning from the original response to the
data pipe for the fetch handler is completed, but still the completion
status via `ServiceWorkerRaceNetworkRequestURLLoaderClient::OnComplete()` is
not invoked.
This metric is recorded per {Resource}.
</summary>
<token key="Resource">
<variant name="MainResource" summary="main resource"/>
<variant name="Subresource" summary="subresource"/>
</token>
</histogram>
<histogram
name="ServiceWorker.FetchEvent.{Resource}.RaceNetworkRequest.Redirect"
enum="Boolean" expires_after="2025-01-26">