Index: chrome/browser/net/sqlite_persistent_cookie_store.cc |
diff --git a/chrome/browser/net/sqlite_persistent_cookie_store.cc b/chrome/browser/net/sqlite_persistent_cookie_store.cc |
index 58f44cae81ae7ced0bea3a8dc2cdacccc4805650..c4cb43a62c0fd3cc9bb7e3f1a638b65457355551 100644 |
--- a/chrome/browser/net/sqlite_persistent_cookie_store.cc |
+++ b/chrome/browser/net/sqlite_persistent_cookie_store.cc |
@@ -65,6 +65,7 @@ class SQLitePersistentCookieStore::Backend |
clear_local_state_on_exit_(false), |
initialized_(false), |
restore_old_session_cookies_(restore_old_session_cookies), |
+ num_cookies_read_(0), |
num_priority_waiting_(0), |
total_priority_requests_(0) { |
} |
@@ -128,11 +129,13 @@ class SQLitePersistentCookieStore::Backend |
private: |
// Creates or loads the SQLite database on DB thread. |
- void LoadAndNotifyOnDBThread(const LoadedCallback& loaded_callback); |
+ void LoadAndNotifyOnDBThread(const LoadedCallback& loaded_callback, |
+ const base::Time& posted_at); |
// Loads cookies for the domain key (eTLD+1) on DB thread. |
void LoadKeyAndNotifyOnDBThread(const std::string& domains, |
- const LoadedCallback& loaded_callback); |
+ const LoadedCallback& loaded_callback, |
+ const base::Time& posted_at); |
// Notifies the CookieMonster when loading completes for a specific domain key |
// or for all domain keys. Triggers the callback and passes it all cookies |
@@ -209,6 +212,10 @@ class SQLitePersistentCookieStore::Backend |
// and reported from the DB thread. |
base::TimeDelta cookie_load_duration_; |
+ // The total number of cookies read. Incremented and reported on the DB |
+ // thread. |
+ int num_cookies_read_; |
+ |
// Guards the following metrics-related properties (only accessed when |
// starting/completing priority loads or completing the total load). |
base::Lock metrics_lock_; |
@@ -303,7 +310,8 @@ void SQLitePersistentCookieStore::Backend::Load( |
DCHECK(!db_.get()); |
BrowserThread::PostTask( |
BrowserThread::DB, FROM_HERE, |
- base::Bind(&Backend::LoadAndNotifyOnDBThread, this, loaded_callback)); |
+ base::Bind(&Backend::LoadAndNotifyOnDBThread, this, loaded_callback, |
+ base::Time::Now())); |
} |
void SQLitePersistentCookieStore::Backend::LoadCookiesForKey( |
@@ -320,15 +328,22 @@ void SQLitePersistentCookieStore::Backend::LoadCookiesForKey( |
BrowserThread::PostTask( |
BrowserThread::DB, FROM_HERE, |
base::Bind(&Backend::LoadKeyAndNotifyOnDBThread, this, |
- key, |
- loaded_callback)); |
+ key, |
+ loaded_callback, |
+ base::Time::Now())); |
} |
void SQLitePersistentCookieStore::Backend::LoadAndNotifyOnDBThread( |
- const LoadedCallback& loaded_callback) { |
+ const LoadedCallback& loaded_callback, const base::Time& posted_at) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
IncrementTimeDelta increment(&cookie_load_duration_); |
+ UMA_HISTOGRAM_CUSTOM_TIMES( |
+ "Cookie.TimeLoadDBQueueWait", |
+ base::Time::Now() - posted_at, |
+ base::TimeDelta::FromMilliseconds(1), base::TimeDelta::FromMinutes(1), |
+ 50); |
Randy Smith (Not in Mondays)
2011/12/05 22:18:08
Do the queue load histograms give us a lot more in
erikwright (departed)
2011/12/06 00:07:09
AFAIK, task profiler data is not yet available fro
|
+ |
if (!InitializeDatabase()) { |
BrowserThread::PostTask( |
BrowserThread::IO, FROM_HERE, |
@@ -341,10 +356,17 @@ void SQLitePersistentCookieStore::Backend::LoadAndNotifyOnDBThread( |
void SQLitePersistentCookieStore::Backend::LoadKeyAndNotifyOnDBThread( |
const std::string& key, |
- const LoadedCallback& loaded_callback) { |
+ const LoadedCallback& loaded_callback, |
+ const base::Time& posted_at) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
IncrementTimeDelta increment(&cookie_load_duration_); |
+ UMA_HISTOGRAM_CUSTOM_TIMES( |
+ "Cookie.TimeKeyLoadDBQueueWait", |
+ base::Time::Now() - posted_at, |
+ base::TimeDelta::FromMilliseconds(1), base::TimeDelta::FromMinutes(1), |
+ 50); |
+ |
bool success = false; |
if (InitializeDatabase()) { |
std::map<std::string, std::set<std::string> >::iterator |
@@ -403,6 +425,10 @@ void SQLitePersistentCookieStore::Backend::ReportMetrics() { |
UMA_HISTOGRAM_COUNTS_100( |
"Cookie.PriorityLoadCount", |
total_priority_requests_); |
+ |
+ UMA_HISTOGRAM_COUNTS_10000( |
+ "Cookie.NumberOfLoadedCookies", |
+ num_cookies_read_); |
} |
} |
@@ -435,11 +461,19 @@ bool SQLitePersistentCookieStore::Backend::InitializeDatabase() { |
return true; |
} |
+ base::Time start = base::Time::Now(); |
+ |
const FilePath dir = path_.DirName(); |
if (!file_util::PathExists(dir) && !file_util::CreateDirectory(dir)) { |
return false; |
} |
+ int64 db_size = 0; |
+ if (file_util::GetFileSize(path_, &db_size)) { |
+ base::ThreadRestrictions::ScopedAllowIO allow_io; |
+ UMA_HISTOGRAM_COUNTS("Cookie.DBSizeInKB", db_size / 1024 ); |
+ } |
+ |
db_.reset(new sql::Connection); |
if (!db_->Open(path_)) { |
NOTREACHED() << "Unable to open cookie DB."; |
@@ -457,6 +491,14 @@ bool SQLitePersistentCookieStore::Backend::InitializeDatabase() { |
db_->Preload(); |
Randy Smith (Not in Mondays)
2011/12/05 22:18:08
Didn't we nuke this? Is there context I'm missing
erikwright (departed)
2011/12/06 00:07:09
After uploading that CL I decided I would prefer t
|
+ UMA_HISTOGRAM_CUSTOM_TIMES( |
+ "Cookie.TimeInitializeDB", |
+ base::Time::Now() - start, |
+ base::TimeDelta::FromMilliseconds(1), base::TimeDelta::FromMinutes(1), |
+ 50); |
+ |
+ start = base::Time::Now(); |
+ |
// Retrieve all the domains |
sql::Statement smt(db_->GetUniqueStatement( |
"SELECT DISTINCT host_key FROM cookies")); |
@@ -481,6 +523,12 @@ bool SQLitePersistentCookieStore::Backend::InitializeDatabase() { |
it->second.insert(domain); |
} |
+ UMA_HISTOGRAM_CUSTOM_TIMES( |
+ "Cookie.TimeInitializeDomainMap", |
+ base::Time::Now() - start, |
+ base::TimeDelta::FromMilliseconds(1), base::TimeDelta::FromMinutes(1), |
+ 50); |
+ |
initialized_ = true; |
return true; |
} |
@@ -565,6 +613,7 @@ bool SQLitePersistentCookieStore::Backend::LoadCookiesForDomains( |
DLOG_IF(WARNING, |
cc->CreationDate() > Time::Now()) << L"CreationDate too recent"; |
cookies.push_back(cc.release()); |
+ ++num_cookies_read_; |
} |
smt.Reset(); |
} |