Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1041)

Unified Diff: chrome/browser/metrics/chrome_metrics_service_client.cc

Issue 2010173005: Support experiment to store persistent metrics in memory-mapped file. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: some comment changes Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/chrome_browser_field_trials.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/metrics/chrome_metrics_service_client.cc
diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc
index c867c27f30fc36fd14ce8270a654f4d426cd6ec4..89b0affbe9d3786f91dba329823a885fa1f1467e 100644
--- a/chrome/browser/metrics/chrome_metrics_service_client.cc
+++ b/chrome/browser/metrics/chrome_metrics_service_client.cc
@@ -180,6 +180,29 @@ CreateInstallerFileMetricsProvider(bool metrics_reporting_enabled) {
return file_metrics_provider;
}
+// If there is a global metrics file being updated on disk, mark it to be
+// deleted when the process exits. A normal shutdown is almost complete
+// so there is no benefit in keeping a file with no new data to be processed
+// during the next startup sequence. Deleting the file during shutdown adds
+// an extra disk-access or two to shutdown but eliminates the unnecessary
+// processing of the contents during startup only to find nothing.
+void CleanUpGlobalPersistentHistogramStorage() {
+ base::GlobalHistogramAllocator* allocator =
+ base::GlobalHistogramAllocator::Get();
+ if (!allocator)
+ return;
+
+ const base::FilePath& path = allocator->GetPersistentLocation();
+ if (path.empty())
+ return;
+
+ // Open (with delete) and then immediately close the file by going out of
+ // scope. This is the only cross-platform safe way to delete a file that may
+ // be open elsewhere.
+ base::File file(path, base::File::FLAG_OPEN | base::File::FLAG_READ |
+ base::File::FLAG_DELETE_ON_CLOSE);
+}
+
} // namespace
@@ -211,6 +234,7 @@ ChromeMetricsServiceClient::ChromeMetricsServiceClient(
ChromeMetricsServiceClient::~ChromeMetricsServiceClient() {
DCHECK(thread_checker_.CalledOnValidThread());
+ CleanUpGlobalPersistentHistogramStorage();
}
// static
« no previous file with comments | « chrome/browser/chrome_browser_field_trials.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698